python - 如何安装我的自定义 Python 包及其自定义依赖项?

标签 python pip package

我想找到一种方法来安装我自己的 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 中包含依赖项名称的方法,就像我对官方 python 包(如 numpy、pyqt5 等)所做的那样。

我找到了一种方法来部分解决我的问题,方法是使用带有 pip 的requirements.txt:

pip install -r requests.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

具有顶级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"],
...

最后,我运行以下命令来安装 myOwnPackage 及其本地依赖项:

pip 安装。 --process-dependency-links

如果按照上面的描述正确构建和设置了所有存储库,它会安装所有递归依赖项。

--process-dependency-links 已在最新版本的 pip 中删除...

关于python - 如何安装我的自定义 Python 包及其自定义依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56676206/

相关文章:

python - 模板表单未在 Django 中呈现

python - pip install libvirt-python 在 vi​​rtualenv 中失败

python - Mac OS X 上的 Pip ImportError : cannot import name walk_packages

python - 我尝试安装 "pip install mysqlclient"但每次都失败。尝试了所有其他方法,但也没有成功。我应该怎么办?

Python 相对导入和包

python - 包级别还存在哪些其他特殊模块(文件)?

python - 如何将 24 帧编码为一张 24 位 RGB 图像?

python - 如何使用正则表达式解析 HTML 中的数字?

python - 警告 : pip is being invoked by an old script wrapper

python - 如何防止 nose 导入 __init__.py 文件?