我有一系列以Python egg开发的插件,它们位于具有以下目录结构的subversion存储库中:
├───project1
│ ├───app_plugin
│ │ setup.py
│ │
│ ├───plugin1
│ │ │ setup.py
│ │ │
│ │ └───python
│ │ │ __init__.py
│ │ │
│ │ └───package
│ │ code.py
│ │ __init__.py
│ │
│ └───plugin2
└───project2
└───plugin3
然后我有一个活跃的virutalenv,并希望使用pip从源代码执行app_plugin及其依赖项(plugin1
,plugin2
,plugin3
)的可编辑安装进入virtualenv的网站包。
如果它只是要安装的app_plugin
蛋,并且它只有PyPI上可用的依赖项,我可以使用这个pip命令:
pip install -e project1/app_plugin
但是因为依赖项是本地源目录而且没有上传到PyPI的包,所以pip无法找到它们。
使用setuptools可以很容易地单独安装/开发依赖项,但是它们有数百种,我需要递归地解决它们的依赖项,并且能够像主应用程序插件一样继续开发它们。
以前(在pip存在之前)我们有一个脚本,它使用主要应用程序egg的依赖关系,并使用setup.py develop
安装它们,这是pip -e
应该做的但只是为了一个蛋
是否可以使用pip来解决本地依赖关系以及来自PyPI的任何依赖关系?
答案 0 :(得分:0)
如果您考虑使用python wheel(the new python packaging standard)而不是鸡蛋,那么如果我正确理解您的问题,可以通过非常简单的方式完成。
步骤1)将每个插件和您的应用程序编译为轮子
python setup.py bdist_wheel
步骤2)创建一个包含所有轮子的驾驶室目录
步骤3)从virtualenv
中的缓存轮盘安装您的应用程序pip install --use-wheel --no-index --find-links=/tmp/wheelhouse app_plugin
有关更多信息,请参阅: Usage of cached wheels和wheelhouse package(这个驾驶室包裹不是必需的,我没有尝试过但可能会有所帮助)。
注意:这不是您问题的直接解决方案,但是可以自动化的解决方案,我相信解决了潜在的问题。