我正在尝试安装 pywallet
pip install pywallet
这在某些时候会失败:
Downloading protobuf-3.0.0a3.tar.gz (88 kB)
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [6 lines of output]
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/tmp/pip-install-_xihs08_/protobuf_2395cbc163b34a7cb79f530d9bda1b24/setup.py", line 29, in <module>
from distutils.command.build_py import build_py_2to3 as _build_py
ImportError: cannot import name 'build_py_2to3' from 'distutils.command.build_py' (/usr/lib/python3.12/site-packages/setuptools/_distutils/command/build_py.py)
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
我知道这不是 pip 错误,而是模块内的依赖项无法构建。 我在某处读到这是由于没有将版本修复为特定版本,建议是找到罪魁祸首并编辑 setup.py。
但是 - 据我所知,安装失败后,所有内容都被清理了向上。 我可以以某种方式下载这个东西,并手动编辑依赖项吗?
pip download pywallet
失败并出现相同的错误。
你是对的,
pip download
在安装本身失败时通常也无法工作。 可以通过以下几种方式解决此问题,并编辑依赖项:
1. 使用
--no-clean
选项:
pip
有一个
--no-clean
选项,可以在安装失败后保留临时构建文件。 尝试运行以下命令:
bash
pip install pywallet --no-clean
如果安装仍然失败,请查看
pip
创建的临时目录(通常是
/tmp/pip-install_[随机字符]/
)。 应该找到下载的
pywallet
源代码以及其依赖项。 可以编辑
pywallet
的
setup.py
文件或相关的依赖项文件,然后尝试重新运行
pip install
。
2. 直接从源代码安装:
-
从其代码仓库(例如 GitHub 或 PyPI)下载
pywallet
的源代码。 - 解压缩下载的文件。
-
打开
setup.py
文件,找到导致问题的依赖项,并编辑其版本号。 -
打开终端,进入解压后的
pywallet
目录。 -
运行
pip install .
来安装修改后的软件包。
3. 创建虚拟环境并使用
pip install -e
:
-
创建一个虚拟环境:
python3 -m venv .venv
-
激活虚拟环境:
source .venv/bin/activate
-
使用
pip download
下载pywallet
包。 - 解压下载的包。
-
修改解压后的包中
setup.py
文件中的依赖项版本。 -
使用
pip install -e /path/to/unpacked/package
安装修改后的包,这将在“可编辑”模式下安装,这意味着对源代码的更改将立即反映在的环境中。
寻找合适的版本:
要找到导致问题的依赖项的正确版本,请查看以下内容:
-
pywallet
的文档或官方网站,看看它们是否指定了兼容的版本。 -
pywallet
的 GitHub 仓库,特别是提交历史记录、问题和拉取请求,以查看其他用户是否遇到过类似的问题并找到了解决方案。
请记住,编辑依赖项版本可能会导致兼容性问题,因此请谨慎操作。 如果可能,最好使用官方支持的版本或寻找替代方案。
标签:python,pip,module From: 79020997