我想找到一种方法来安装自己的python软件包,该软件包依赖于其他自定义python软件包。
我按照本指南创建了自己的python软件包:https://python-packaging.readthedocs.iao/en/latest/
对于所有软件包,最小结构为:
myOwnPackage/
myOwnPackage/
__init__.py
setup.py
现在,我创建了一个依赖于其他自定义程序包的程序包。其结构为:
myOwnPackage/
dependencies/
packageA
packageB
myOwnPackage/
__init__.py
setup.py
我的问题是:如何使用pip轻松安装myOwnPackage
及其自定义依赖项?
对于上述示例,我想在这样调用pip时安装myOwnPackage,packageA和packageB:pip install myOwnPackage
我没有找到一种在setup.py中包含依赖项名称的方法,就像我对numpy
,pyqt5等官方python包所做的那样。
我找到了一种通过在pip中使用requirements.txt来部分解决问题的方法:
pip install -r requirements.txt myOwnPackage
这是我编写需求文件的方式:
./dependencies/packageA
./dependencies/packageB
我工作得很好,但是当我有这样的递归依赖项时:
myOwnPackage/
dependencies/
packageA/
dependencies/
packageC
packageA/
__init__.py
setup.py
requirements.txt
packageB
myOwnPackage/
__init__.py
setup.py
requirements.txt
具有最高要求的pip。txt将安装myOwnPackage,packageA和packageB,但它不知道必须安装是packageA依赖项的packageC。
有什么想法吗?
答案 0 :(得分:0)
我几乎解决了我的问题。
我需要使用以下命令构建每个依赖项:python setup.py sdist
以便创建单个程序包文件(tar.gz)
然后,我可以在顶级软件包setup.py中调用它们:
...
dependency_links=["file:/local/path/myOwnPackage/dependencies/packageA/dist/packageA-0.1.tar.gz"],
install_requires=["packageA"],
...
最后,我运行以下命令来安装myOwnPackage
及其本地依赖项:
pip install . --process-dependency-links
如果按照上述方法正确构建和设置了所有存储库,则它将安装所有递归依赖项。
--process-dependency-links
在上一个版本的pip中已被删除...