我在Github上开发了一个Python包,并发布到了PyPi。可以通过pip install PACKAGENAME
进行安装,但是它不会处理setup.py文件中"install_requires"指定的依赖关系。
奇怪的是,关联的发布zip文件确实安装了所有依赖项。我尝试了不同的虚拟环境和不同的计算机,但它从未安装过依赖关系。感谢任何帮助。
pip install pythutils
会下载一个wheel包,如果有的话——而你的包是有的。
在生成一个wheel包时,setuptools
会本地运行python setup.py
,但不会将setup.py
包含在wheel包中。下载你的wheel文件并解压缩它(它只是一个zip归档)——这里有你的主包目录pythutils
和一个带有元数据的目录pythutils-1.1.1.dist-info
。在元数据目录中有一个文件METADATA
,通常列出了一些静态依赖项,但你的文件没有列出任何依赖项。因为在生成wheel包时,所有依赖项都已经被安装,所以所有动态代码路径都被跳过了。
pip
会运行python setup.py install
来使动态依赖项生效。pip
决定要安装哪个版本:install_requires=[
'numpy==1.16.5; python_version>="2" and python_version<"3"',
'numpy; python_version>="3"',
],
您的setup.py
会进行一系列检查,例如:
try:
import numpy
except ImportError:
if sys.version_info[0] == 2:
install_requires.append('numpy==1.16.5')
if sys.version_info[0] == 3:
install_requires.append("numpy")
install_requires
中得到了一个空列表。但是这种做法是错误的;你应该简单地制作一个静态列表(或者两个静态列表,如果你真的想在同一个包中支持 Python 2 和 Python 3)。
setup.py
。 - tripleee