安装使用的命名空间包的依赖项
Install dependencies of used namespaced packages
假设我有以下包结构:
package/
mynamespace-subpackage-a/
setup.py
mynamespace/
subpackage_a/
__init__.py
mynamespace-subpackage-b/
setup.py
mynamespace/
subpackage_b/
__init__.py
module_b.py
with setup.py in package a:
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)。如果不可能,那么以下替代方法之一可能会有所帮助:
放置 a
和 b
的分布(wheel 或 source 分布)在本地目录中,然后使用 pip 的 --find-links
选项 (doc):pip install --find-links=path/to/distributions mynamespace-subpackage-b
使用 direct reference file URL as seen in PEP 440: install_requires=['a @ file:///path/to/a.whl']
使用 direct remote URL(VCS 例如 git 会起作用) URL 可以是私有存储库或本地文件系统:install_requires=['mynamespace-subpackage-a @ git+file:///path/to/mynamespace-subpackage-a@master']
,这假设 setup.py
位于存储库的根目录。
假设我有以下包结构:
package/
mynamespace-subpackage-a/
setup.py
mynamespace/
subpackage_a/
__init__.py
mynamespace-subpackage-b/
setup.py
mynamespace/
subpackage_b/
__init__.py
module_b.py
with setup.py in package a:
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)。如果不可能,那么以下替代方法之一可能会有所帮助:
放置
a
和b
的分布(wheel 或 source 分布)在本地目录中,然后使用 pip 的--find-links
选项 (doc):pip install --find-links=path/to/distributions mynamespace-subpackage-b
使用 direct reference file URL as seen in PEP 440:
install_requires=['a @ file:///path/to/a.whl']
使用 direct remote URL(VCS 例如 git 会起作用) URL 可以是私有存储库或本地文件系统:
install_requires=['mynamespace-subpackage-a @ git+file:///path/to/mynamespace-subpackage-a@master']
,这假设setup.py
位于存储库的根目录。