首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么pip不安装在setup.py中指定的依赖项?

为什么pip不安装在setup.py中指定的依赖项?
EN

Stack Overflow用户
提问于 2018-06-04 01:49:26
回答 1查看 1.6K关注 0票数 2

我用一个setup.py构建了一个Python包,如下所示:

代码语言:javascript
复制
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'
     ]
)

当我使用以下命令在本地安装软件包时

代码语言:javascript
复制
pip install .

Pip安装install_requires中的所有依赖项。但是,当我通过PyPI注册包并使用

代码语言:javascript
复制
pip install my_package

Pip不安装依赖项。(我是在一个全新的环境中执行此操作的,因此尚未安装这些包;安装失败。)到底怎么回事?通读文档,它看起来可能类似于

代码语言:javascript
复制
     install_requires=[
         'numpy==1.14.1',
         'other_package==ve.rs.ion'
     ]

可能工作得更好,因为版本是指定的。这会是问题所在吗?

以下是指向存储库的链接:

PyCDA on GitHub

PyCDA on PyPI

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 03:21:14

您的setup.py包含以下行:

代码语言:javascript
复制
path = pkg_resources.resource_filename('pycda', 'models/tinynet.h5')

根据我在尝试安装您的软件包时得到的回溯,此调用使pkg_resources尝试导入您的软件包,但您的软件包导入了numpy。因为numpy只有在pip知道它是一个依赖项时才能安装,而且如果不运行setup.py它就不能知道它是一个依赖项,并且因为setup.py不能在不进行上述pkg_resources调用的情况下运行,所以我们在知道需要numpy之前就结束了这种情况;因此,出现了一个错误。解决方案是删除上面的行,这应该很容易,因为甚至没有使用path变量!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50669306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档