gpt4 book ai didi

python - pip 不安装我的软件包依赖项

转载 作者:行者123 更新时间:2023-12-03 15:55:38 25 4
gpt4 key购买 nike

我在 github 上开发了一个 python 包,我在 PyPi 上发布了它。它安装 pip install PACKAGENAME ,但不会对 setup.py 文件的“install_requires”中声明的依赖项执行任何操作。

奇怪的是,相关发行版的 zip 文件确实安装了所有依赖项。

最佳答案

pip install pythutils如果可用,则下载轮子 — 和 it's available为您的包裹。

生成轮子时 setuptools运行 python setup.py 本地但不包括 setup.py进入车轮。下载您的 wheel file并解压缩它(它只是一个 zip 存档)——这是你的主包目录 pythutils和一个包含元数据的目录 pythutils-1.1.1.dist-info .在元数据目录中有一个文件 METADATA通常列出 静态 依赖项,但您的文件没有列出任何。因为当您生成轮子时,所有依赖项都已安装,因此所有动态代码路径都被跳过。

您从 Github release 下载的存档安装依赖项,因为它不是轮子,所以 pip运行 python setup.py install并且您的动态依赖项有效。

你可以做什么?我的建议是避免动态依赖。声明静态依赖项并允许 pip决定安装哪些版本:

install_requires=[
'numpy==1.16.5; python_version>="2" and python_version<"3"',
'numpy; python_version>="3"',
],

另一种方法是创建特定于版本的轮文件——一个用于 Python 2,另一个用于 Python 3——具有固定的依赖关系。

另一种方法是根本不发布轮子,只发布 sdist(源代码分发)。然后 pip被迫运行 python setup.py install在目标机器上。这不是最好的方法,对于带有 C 扩展的包肯定会有问题(用户必须有编译器和开发工具才能从源代码安装)。

关于python - pip 不安装我的软件包依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58881683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com