我构建了一个带有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='myname@email.com',
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'
]
可能会更好地工作,因为指定了版本。这可能是问题吗?
以下是回购的链接:
答案 0 :(得分:2)
您的setup.py
包含以下行:
path = pkg_resources.resource_filename('pycda', 'models/tinynet.h5')
根据我在尝试安装软件包时获得的回溯,此调用会使pkg_resources
尝试导入您的软件包,但您的软件包会导入numpy
。因为numpy
无法安装,除非pip知道它是一个依赖项,并且因为它无法在不运行setup.py
的情况下知道它是一个依赖项,并且因为setup.py
无法在没有首先制作的情况下运行在上述pkg_resources
电话中,我们最终会遇到需要numpy
的情况才能知道它是必需的;因此,一个错误。解决方案是删除上面的行,这应该很简单,因为甚至没有使用path
变量!