安装已使用的命名空间包的依赖项



假设我有以下包结构:

package/
mynamespace-subpackage-a/
setup.py
mynamespace/
subpackage_a/
__init__.py
mynamespace-subpackage-b/
setup.py
mynamespace/
subpackage_b/
__init__.py
module_b.py

包 A 中 setup.py:

from setuptools import find_packages, setup
setup(
name='mynamespace-subpackage-a',
...
packages=find_packages(),
namespace_packages=['mynamespace'],
install_requires=['pandas']
)

和套餐 B:

from setuptools import find_packages, setup
setup(
name='mynamespace-subpackage-b',
...
packages=find_packages(),
namespace_packages=['mynamespace'],
install_requires=[]
)

包 B 使用包 A,但它没有任何对 Pandas 库本身的引用。所以它没有列在install_requires中,但在包 b 中执行pip install .时仍应安装,包 a 应随之打包。

应该在第二个setup文件中添加什么来实现,这甚至可能吗?或者pandas也应该在包 b 的要求列表中?

我会怀疑这样的事情:

install_requires = ['mynamespace.subpackage_a`]

根据我对这个问题的理解,我认为应该是:

package/mynamespace-subpackage-b/setup.py

#...
setup(
name='mynamespace-subpackage-b',
# ...
install_requires=[
'mynamespace-subpackage-a',
# ...
],
)

这显然假设pip可以在安装b时找到a,这意味着a的分布应该发布在某种索引上(例如 PyPI(。如果不可能,那么以下选择之一可能会有所帮助:

  • ab的分布(源分布(放在本地目录中,然后使用pip--find-links选项(doc(:pip install --find-links=path/to/distributions mynamespace-subpackage-b

  • 使用直接引用文件 URL,如PEP 440install_requires=['a @ file:///path/to/a.whl']

  • 使用直接远程 URL(VCSgit会起作用(该 URL 可以是私有存储库或本地文件系统:install_requires=['mynamespace-subpackage-a @ git+file:///path/to/mynamespace-subpackage-a@master'],这假设setup.py位于存储库的根目录。

相关内容

  • 没有找到相关文章

最新更新