我使用 setup.py 构建了一个 Python 包,如下所示:
from setuptools import setup, find_packages
setup(
name='my_package',
version='0.1',
url='https://github.com/me/my_package',
download_url='https://github.com/dwnlod.tar.gz',
author='me',
author_email='<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6a0713040b070f2a0f070b030644090507" rel="noreferrer noopener nofollow">[email protected]</a>',
license='MIT',
packages=['my_package'],
install_requires=[
'numpy',
'other_package'
]
)
当我在本地安装软件包时
pip install .
Pip 安装 install_requires 中的所有依赖项。但是,当我通过 PyPI 注册包并使用
pip install my_package
Pip 不安装依赖项。 (我在全新环境中执行此操作,因此尚未安装软件包;安装失败。)发生了什么事?通读文档,看起来可能是这样的
install_requires=[
'numpy==1.14.1',
'other_package==ve.rs.ion'
]
可能会工作得更好,因为版本是指定的。这会是问题所在吗?
这是存储库的链接:
最佳答案
您的setup.py
包含以下行:
path = pkg_resources.resource_filename('pycda', 'models/tinynet.h5')
根据我在尝试安装您的软件包时获得的回溯,此调用使 pkg_resources
尝试导入您的软件包,但您的软件包导入 numpy
。因为 numpy 无法安装,除非 pip 知道它是一个依赖项,并且因为它不运行 setup.py
就无法知道它是一个依赖项,而且因为 setup如果不先进行上述
就无法运行,我们最终会遇到这样的情况:在我们知道 pkg_resources
调用,.pynumpy
是必需的之前,它是必需的;因此,出现错误。解决方案是删除上面的行,这应该很容易,因为甚至没有使用 path
变量!
关于python - 为什么 pip 不安装 setup.py 中指定的依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50669306/