我遇到pip无法从本地目录安装可编辑软件包的问题。我可以使用pip install -e pkg1
之类的命令手动安装软件包。我想使用requirements.txt
文件来自动化将来的安装,因为我的同事将使用相同的软件包。我理想的开发工作流程是让每个开发人员从版本控制中签出源代码并运行pip install -r requirements.txt
。需求文件会将所有软件包指定为可编辑的,因此我们可以导入代码而无需使用.pth
文件,但是我们不必继续更新环境。通过使用命名空间包,我们可以将导入语义与文件结构分离。
但是没有解决。
我有一个目录,其中包含以下软件包:
index/
pkg1/
src/
pkg1/
__init__.py
pkg1.py
setup.py
pkg2/
src/
...etc.
每个setup.py
文件都包含以下内容:
from setuptools import setup, find_packages
setup(
name="pkg1",
version="0.1",
packages=find_packages('src'),
package_dir={'':'src'},
)
我使用requirements.txt
生成了pip freeze
文件,结果如下:
# Editable install with no version control (pkg1==0.1)
-e c:\source\pkg1
# Editable install with no version control (pkg2==0.1)
-e c:\source\pkg2
...etc...
当pip为它自己创建的需求文件阻塞时,我感到惊讶:
(venv) C:\Source>pip install -r requirements.txt
c:sourcepkg1 should either be a path to a local project or a VCS url beginning with svn+, git+, hg+, or bzr+
此外,我们的某些软件包依赖于我们的其他软件包,而pip在识别这些依赖项方面绝对没有用。我已经采取了以依赖顺序手动安装软件包的方法。
也许我在这里把点子推到了极限。到目前为止,在线文档和帮助并没有帮助。大多数资料都讨论了可编辑的安装,从需求文件进行安装,程序包相关性或名称空间程序包,但绝不会一次所有这些概念。通常,当在线帮助匮乏时,这意味着我正在尝试将某工具用于不希望做的事情或发现了一个错误。
这个开发过程可行吗?我需要建立私有包索引或其他内容吗?