26

是否可以指定(可编辑的)源依赖项,这些依赖setup.py项已知驻留在本地文件系统上?

考虑以下目录结构,所有这些都位于单个 VCS 存储库中:

projects
  utils
    setup.py
    ...
  app1
     setup.py
     ... # app1 files depend on ../utils
  app2
     setup.py
     ... # app2 files depend on ../utils

给定以下命令:

cd projects
mkvirtualenv app1
pip install -e app1

我想安装 app1 的所有依赖项,包括“utils”,这是一个“可编辑”的依赖项。同样,如果我对 app2 做同样的事情。

我尝试过使用所有不同的file://...URL组合install_requiresdependency_links但无济于事。我想使用一个依赖链接 URL,比如src+file://../utils,它会告诉 setuptools 包的源在这个相对路径的文件系统上。有没有办法做到这一点?

4

3 回答 3

9

我设法在 setup.py 中提供了相对本地依赖项:

setup(
    install_requires=[
        'utils @ file://localhost/%s/../utils/' % os.getcwd().replace('\\', '/'),
        ],
    )

但也许有人知道更好的解决方案

于 2020-08-26T10:55:50.883 回答
6

我有一个相同的问题,我需要依赖同级文件夹中的模块。在偶然发现https://caremad.io/2013/07/setup-vs-requirement/后,我找到了解决方案

我结束了 requirements.txt 来专门引用我想要的文件,然后安装所有东西

pip install -r requirements.txt

要求.txt

-e ../utils                                                                                                                                                                    
-e .

setup.py 有我所有的其他依赖项,包括 utils。当 pip 尝试自己安装 app1 时,它意识到 utils 依赖项已经被填充,因此在安装其他需求时跳过它。

于 2014-11-26T02:58:28.110 回答
-1

当我想处理一组相互关联的项目时,我会使用/setup.py develop.

如果我错误地或稍后我想让 pip 安装的模块可编辑,我克隆源代码,并python setup.py develop对其进行操作,替换现有的。

为了确定,我删除了 virtualenv 的站点包和包本身中的引用。

于 2014-11-20T00:08:14.867 回答