首页 > 解决方案 > 如何使用需求文件以可编辑模式从本地目录安装相互依赖的包

问题描述

我遇到了 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 在识别这些依赖项方面绝对无用。我已经求助于按依赖顺序手动安装软件包。

也许我在这里将点子推到了极限。到目前为止,在线文档和帮助没有帮助。大多数资源都讨论了可编辑安装、从需求文件安装、包依赖项或命名空间包,但从来没有同时讨论所有这些概念。通常当在线帮助稀缺时,这意味着我正在尝试使用一个工具来完成它不打算做的事情,或者我发现了一个错误。

这个开发过程可行吗?我需要制作私人包索引或其他东西吗?

标签: pipsetuptools

解决方案


推荐阅读