python软件在下载库文件_Python:在哪里放置外部软件包?

我有一个Django项目,该项目使用的是我尚未通过virtualenv中的pip安装的外部软件包,而是通过git clone获得的,现在我想知道将其放置在何处以及文件夹的名称应如何.外部包装为:Evernote Python3 SDK

这是我当前的Django项目结构:

? (venv:evernote) evernote_bear_project git:(master) tree

.

├── README.md

├── bear2evernote

│ ├── static

│ └── templates

├── config

│ ├── __init__.py

│ ├── settings.py

│ ├── urls.py

│ └── wsgi.py

├── libs

│ ├── evernote-sdk-python3

│ (omitted)

│ └── utils

│ ├── __init__.py

│ └── file_utils.py

└── manage.py

我将这个包evernote-sdk-python3放在了我的Django项目文件夹中的libs文件夹中.我还将实用程序函数放在libs下的一个名为utils的包中

现在,我知道关于如何像下面两个这样的项目结构有很多建议:

而且我也知道Python不会强迫您使用教条式文件夹结构.但是,尽管如此:我对包装,包装命名和包装结构没有深刻的了解.

>将外部软件包放在(Django)项目根文件夹下是否是一种好习惯?

>将我所有与我的特定Django应用程序无关的软件包/库放在一个名为libs或utils或src的文件夹中是否有意义?

编辑:我也看不到有关如何使用这些文件夹名称的最佳最佳实践:

> src

> lib

>工具

最佳答案

通常,推荐的工作流程如下:

>您的virtualenv应该已经从版本控制中排除(例如,使用.gitignore或.hgignore).如果不是,请立即执行.

>尽可能将内容从PyPI安装到您的virtualenv中,而不是从GitHub或其他地方下载它们.

>如果必须在PyPI上安装某些东西,请使用格式shown in the reference manual之一传递git:// …之类的URL来进行pip安装.如果需要固定到特定的提交,请同时传递-e进行安装,并在URL中包含提交标识符.否则,依赖关系将有效地“活跃”起来,将来您可能无法恢复到该确切的提交.

>如果由于某种原因您必须维护其他人项目的本地分支(例如,因为您正在该项目上运行2to3?),那么按照您的建议进行操作可能很有意义.克隆(或下载(视情况而定))后,使用pip install -e ./libs/libfoo安装.不建议这样做,因为您需要定期从上游拉入或向后移植更改,这非常耗费人力.使用这种方法的版本控制也很麻烦,因为您可能没有可用于三路合并的上游历史记录(有ways around this-注意Linus显示的命令可能不是当今最好的方法).

>安装完所需的所有文件后,请使用pip Frozen生成一个requirements.txt文件,将所述文本文件粘贴到Django项目目录中,然后将其检入版本控制中.该文件应该足以从上游源完全重新生成所有依赖项,而无需将任何依赖项检入源代码控制中(当然,除非您执行的是#4).

>定期执行pip install -U并针对较新版本的依赖项运行回归测试,然后重做pip冻结并将更改检查到版本控制中.当依赖关系破坏向后兼容性或引起其他问题时,您还可以根据需要手动编辑requirements.txt文件.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值