我的目标是创建一个具有两个子软件包的名称空间包: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] 删除。
我来说两句