【问题标题】:Why doesn't pip install dependencies specified in setup.py?为什么 pip 不安装 setup.py 中指定的依赖项?
【发布时间】:2018-11-13 02:57:48
【问题描述】:

我用 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'
     ]

可能会更好,因为指定了版本。会不会是这个问题?

这里是repo的链接:

PyCDA on GitHub
PyCDA on PyPI

【问题讨论】:

  • 你确定这些包还没有安装吗?
  • 是的,我创建了一个新环境来测试安装过程;由于卸载的依赖项,安装失败:(
  • 你能链接包或源吗?鉴于提供的信息,不可能知道出了什么问题
  • 是的,我能做到。

标签: python pip pypi


【解决方案1】:

您的setup.py 包含以下行:

path = pkg_resources.resource_filename('pycda', 'models/tinynet.h5')

根据我在尝试安装您的包时获得的回溯,此调用使pkg_resources 尝试导入您的包,但您的包导入了numpy。因为 numpy 无法安装,除非 pip 知道它是一个依赖项,并且因为它不运行 setup.py 就无法知道它是一个依赖项,并且因为 setup.py 不能在不先进行上述 pkg_resources 调用的情况下运行,我们最终会遇到需要numpy 才能知道它是必需的情况;因此,一个错误。解决方法是删除上面的行,这应该很容易,因为 path 变量甚至没有被使用!

【讨论】:

    猜你喜欢
    • 2011-05-08
    • 2020-01-09
    • 2021-09-01
    • 2022-01-15
    • 2015-07-04
    • 2018-09-27
    • 2016-08-21
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多