Python命名空间子软件包(取决于另一个子软件包)无法安装

Chenlu

我的目标是创建一个具有两个子软件包的名称空间包:foo和bar(取决于foo),并将该名称空间包推送到git repo(无需将其发布到PyPI),以便我可以使用回购网址。

我正在按照本教程创建名称空间结构:

root/
 ├ setup.py
 └ microlibs/
    ├ foo/
    │  ├ setup.py
    │  ├ macrolib/
    │     └ foo/
    │        ├ __init__.py
    │        ├ module1.py
    │        ├ ...
    │        └ moduleN.py
    .
    .
    .
    └ bar/
       ├ setup.py
       ├ macrolib/
          └ bar/
             ├ __init__.py
             ├ module1.py
             ├ ...
             └ moduleN.py

foo的setup.py文件没有依赖项:

foo / setup.py

from setuptools import setup
microlib_name = 'macrolib.foo'
setup(
    name=microlib_name,
    version="0.1.0",
    namespace_packages=['macrolib'],
    packages=[microlib_name],
    install_requires=[]
)

由于bar的依赖项包括foo,因此bar的setup.py在install_requires列表中包括macrolib.bar:

栏/setup.py

from setuptools import setup
microlib_name = 'macrolib.bar'
setup(
    name=microlib_name,
    version="0.1.0",
    namespace_packages=['macrolib'],
    packages=[microlib_name],
    install_requires=[
        'macrolib.foo'
    ]
)

推送到bitbucket存储库后,我可以安装macrolib.foo,而存储库的子目录没有问题。

$ pip install git+http://path/to/repo.git@<branch name>#"subdirectory=foo&egg=macrolib.foo"

安装了macrolib.foo之后,我还可以安装macrolib.bar,而仓库的子目录没有问题。

$ pip install git+http://path/to/repo.git@<branch name>#"subdirectory=bar&egg=macrolib.bar"

但是,如果我尝试不先安装macrolib.foo而安装macrolib.bar,则安装失败。

$ pip install git+http://path/to/repo.git@<branch name>#"subdirectory=bar&egg=macrolib.bar"

错误:

Collecting macrolib.foo (from macrolib.bar==0.1.0)
  Could not find a version that satisfies the requirement macrolib.foo (from macrolib.bar==0.1.0) (from versions: )
No matching distribution found for macrolib.foo (from macrolib.bar==0.1.0)

我猜这是因为bar / setup.py中缺少dependency_links。因此,我尝试了链接URL的不同组合,但均失败,并出现相同的错误。

我尝试过的格式:

dependency_links=['http://path/to/repo.git@<branch name>#"subdirectory=foo&egg=macrolib.foo"']

dependency_links=['http://path/to/repo.git@<branch name>#subdirectory=foo&egg=macrolib.foo']

dependency_links=['http://path/to/repo/tarball/<branch name>#"subdirectory=foo&egg=macrolib.foo"']

dependency_links=['http://path/to/repo/tarball/<branch name>#subdirectory=foo&egg=macrolib.foo']

dependency_links=['http://path/to/repo/archive/<branch name>.zip#"subdirectory=foo&egg=macrolib.foo"']

dependency_links=['http://path/to/repo/archive/<branch name>.zip#subdirectory=foo&egg=macrolib.foo']

或在上述所有网址中添加前缀“ git +”。

我的问题是,为了将macrolib.foo安装为依赖项,dependency_links的正确url格式是什么,或者还有其他方法可以使其工作吗?

博士

这是正确的格式(添加'git +'和依赖版本):

dependency_links=['git+http://path/to/repo.git@<branch name>#subdirectory=foo&egg=macrolib.foo-0.1.0']

并且您需要请求pip进行处理:

pip install --process-dependency-links git+http://path/to/repo.git@<branch name>#"subdirectory=bar&egg=macrolib.bar"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python install package作为另一个软件包的子软件包

如何查看安装另一个软件包所需的软件包?

是否可以在安装另一个软件包时卸载一个软件包

python ipdb软件包在另一个软件包中可用吗?

如何列出依赖Debian中另一个已安装软件包的已安装软件包?

在Python中调用另一个已安装的软件包

列出Yum中依赖于另一个已安装软件包的软件包

查看哪个软件包具有另一个已安装软件包作为依赖项

如何从源中删除与另一个软件包同名的软件包?

来自另一个软件包的Atom软件包命令

强制apt-get覆盖另一个软件包安装的文件

将deb软件包文件安装在另一个目录中

如何使用另一个Debian软件包安装Docker?

如何使用另一个 Debian 软件包安装 Docker?

如何使一个Alpine软件包与另一个Alpine软件包冲突?

“软件包ufw不可用,但由另一个软件包引用

创建引用解决方案中另一个软件包的软件包

如何安装存储在另一个手动创建的deb软件包中的deb软件包?

尝试删除另一个软件包时,如何重新安装意外删除的软件包?

Ansible:使用pip安装python子软件包

OSGi捆绑软件或软件包可以依赖于另一个捆绑软件或软件包的多个版本吗?

无法安装python FFVideo软件包

Python无法安装软件包

将软件包从一个 python 版本更改为另一个

Conda安装一个已经存在的软件包

易于从sid安装一个软件包

创建一个deb软件包以安装扩展

哪个软件包需要自动安装一个?

在Julia上全局安装一个软件包