为什么不修改setup.py中指定的安装依赖项?

时间:2018-06-03 17:49:26

标签: python pip pypi

我构建了一个带有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'
     ]

可能会更好地工作,因为指定了版本。这可能是问题吗?

以下是回购的链接:

PyCDA on GitHub
PyCDA on PyPI

1 个答案:

答案 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变量!