ava*_*ygn 7 python pip package
我想找到一种方法来安装我自己的 python 包,该包依赖于其他自定义 python 包。
我按照本指南创建了自己的 python 包:https://python-packaging.readthedocs.iao/en/latest/
对于所有包,最小结构是:
myOwnPackage/
myOwnPackage/
__init__.py
setup.py
Run Code Online (Sandbox Code Playgroud)
现在,我创建了一个依赖于其他自定义包的包。其结构为:
myOwnPackage/
dependencies/
packageA
packageB
myOwnPackage/
__init__.py
setup.py
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何myOwnPackage使用 pip 轻松安装及其自定义依赖项?
对于上面的示例,我想在调用 pip 时安装 myOwnPackage、packageA 和 packageB:pip install myOwnPackage
我没有找到一种在 setup.py 中包含依赖项名称的方法,就像我可以为官方 python 包(如numpypyqt5 等)所做的那样。
我找到了一种方法来部分解决我的问题,方法是使用 pip 的 requests.txt :
pip install -r requirements.txt myOwnPackage
这是我编写需求文件的方式:
./dependencies/packageA
./dependencies/packageB
Run Code Online (Sandbox Code Playgroud)
我工作得很好,但当我有这样的递归依赖项时就不行了:
myOwnPackage/
dependencies/
packageA/
dependencies/
packageC
packageA/
__init__.py
setup.py
requirements.txt
packageB
myOwnPackage/
__init__.py
setup.py
requirements.txt
Run Code Online (Sandbox Code Playgroud)
具有顶级requirements.txt的pip将安装myOwnPackage、packageA和packageB,但它不知道它必须安装packageC,这是packageA的依赖项。
任何想法?
我几乎解决了我的问题。
我需要使用以下命令构建每个依赖项: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"],
...
Run Code Online (Sandbox Code Playgroud)
最后,我运行以下命令来安装myOwnPackage及其本地依赖项:
pip install . --process-dependency-links
如果按照上述方式正确构建和设置了所有存储库,它将安装所有递归依赖项。
--process-dependency-links已在最新版本的 pip 中删除...
| 归档时间: |
|
| 查看次数: |
5619 次 |
| 最近记录: |