目录
Error: metadata-generation-failed. Encountered error while generating package metadata
错误:元数据生成失败。生成包元数据时遇到错误
出现错误“元数据生成失败。生成包元数据时遇到错误”的原因有多种:
- 有一个过时的版本
pip
和setuptools
。 - 您尝试安装的包不支持 Python 版本。
- 包裹名称拼写错误。
- 缺少依赖项。
error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─> [1 lines of output] ERROR: Can not execute `setup.py` since setuptools is not available in the build environment. [end of output] error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output. note: This is an issue with the package mentioned above, not pip. hint: See above for details.
--use-deprecated
尝试使用选项安装包
您应该尝试的第一件事是运行pip install
带有
--use-deprecated
选项的命令。
pip install numpy --use-deprecated=legacy-resolver pip3 install numpy --use-deprecated=legacy-resolver python -m pip install numpy --use-deprecated=legacy-resolver python3 -m pip install numpy --use-deprecated=legacy-resolver py -m pip install numpy --use-deprecated=legacy-resolver
numpy
为您要安装的软件包的名称。该--use-deprecated
选项允许我们在安装模块时使用旧的解析器行为。
如果您有旧版本的pip
,则必须将--use-deprecated
选项设置为backtrack-on-build-failures
。
pip install numpy --use-deprecated=backtrack-on-build-failures pip3 install numpy --use-deprecated=backtrack-on-build-failures python -m pip install numpy --use-deprecated=backtrack-on-build-failures python3 -m pip install numpy --use-deprecated=backtrack-on-build-failures
检查包是否支持你的 Python 版本
如果这些建议没有帮助,请阅读错误消息的末尾部分。
它可能包含以下信息:“RuntimeError:无法在 Python 版本 3.11.0 上安装;仅支持 >=3.7、<3.11 的版本。”
在这种情况下,您必须使用
包支持的Python版本。
安装缺少的依赖项
您的错误消息还可能包含您必须安装的缺失包,例如“ModuleNotFoundError: No module named ‘auxlib'”。
在这种情况下,您必须auxlib
先安装该软件包,然后再安装其他软件包。
pip install auxlib pip3 install auxlib python -m pip install auxlib python3 -m pip install auxlib
auxlib
为错误消息中的包。 包名拼错(例如 installing dotenv
)
错误的另一个常见原因是拼错了包的名称,并试图错误地安装一些损坏的、过时的模块。
例如,当您尝试将
python-dotenv模块安装为
pip install dotenv
.
# ⛔️ Error: the package is not named dotenv pip install dotenv pip3 install dotenv
确保指定正确的安装命令。
# ✅ specifying the correct name of the package pip install python-dotenv pip3 install python-dotenv
您可以在谷歌上搜索“pypi {your_package_name}”并单击第一个结果以确保包的名称是正确的。
您还可以在PyPI页面上搜索包目录
。
更新你的版本pip
如果这些建议都没有帮助,请尝试
在安装软件包之前升级您的pip
版本。
pip
以下是在所有操作系统上升级的命令。
哪个命令有效取决于您的操作系统和 Python 版本。
# 👇️ if you have pip already installed pip install --upgrade pip # 👇️ if your pip is aliased as pip3 (Python 3) pip3 install --upgrade pip # 👇️ if you don't have pip in your PATH environment variable python -m pip install --upgrade pip # 👇️ if you don't have pip in your PATH environment variable python3 -m pip install --upgrade pip # 👇️ if you have easy_install easy_install --upgrade pip # 👇️ if you get a permissions error sudo easy_install --upgrade pip # 👇️ if you get a permissions error when upgrading pip pip install --upgrade pip --user # 👇️ upgrade pip scoped to the current user (if you get permissions error) python -m pip install --user --upgrade pip python3 -m pip install --user --upgrade pip # 👇️ Installing directly from get-pip.py (MacOS and Linux) curl https://bootstrap.pypa.io/get-pip.py | python # 👇️ if you get permissions issues curl https://bootstrap.pypa.io/get-pip.py | sudo python # 👇️ alternative for Ubuntu/Debian sudo apt-get update && apt-get upgrade python-pip # 👇️ alternative for Red Hat / CentOS / Fedora sudo yum install epel-release sudo yum install python-pip sudo yum update python-pip
更新setuptools
和wheel
升级后pip
,
还要升级 setuptools 。
pip install --upgrade setuptools pip3 install --upgrade setuptools python -m pip install --upgrade setuptools python3 -m pip install --upgrade setuptools py -m pip install --upgrade setuptools
现在您的版本已升级,请尝试安装该软件包pip
。
pip install numpy pip3 install numpy python -m pip install numpy python3 -m pip install numpy py -m pip install numpy
确保您没有尝试安装内置于标准 Python 库中的模块,例如模块email
。您可以直接导入内置模块而无需安装它们。
如果这些建议都没有帮助,请确保该包支持您的 Python 版本。
--pre
安装带有选项的模块
当您尝试安装的包不支持您的 Python 版本时,通常会出现此错误。
要解决该错误,请尝试pip install
使用该--pre
选项运行命令。
pip install pygame --pre pip3 install pygame --pre python -m pip install pygame --pre python3 -m pip install pygame --pre py -m pip install pygame --pre
pygame模块经常会导致错误,因为该模块尚未更新以支持最新版本的 Python 。
该--pre
选项使其pip
包含该包的预发布版本和开发版本。默认情况下pip
仅查找稳定版本。
检查包是否支持你的Python版本
Google 查找包的名称并检查该包是否支持您的 Python 版本。
例如,如果我在 google 上搜索“requests pypi”并单击
pypi.org页面,我可以在左侧边栏中的Meta
>下看到受支持的 Python 版本Requires
。
截图显示该包支持Python 3.7+。
您的错误消息可能包含类似“RuntimeError:无法在 Python 版本 3.11.0 上安装;仅支持 >=3.7、<3.11 的版本”之类的内容。
如果您有多个 Python 版本,则可能在 IDE 中选择了不正确的解释器。
如果您使用 VS Code,请查看
这篇文章
,了解如何更改 Python 版本并选择正确的解释器。
如果该包不支持最新版本的 Python,请尝试
pip install
使用该--pre
选项运行该命令。
pip install requests --pre pip3 install requests --pre python -m pip install requests --pre python3 -m pip install requests --pre py -m pip install requests --pre
requests
为您尝试安装的实际包的名称。该--pre
选项使其pip
包含该包的预发布版本和开发版本。默认情况下pip
仅查找稳定版本。
如果这不起作用,您必须安装指定范围内的 Python 版本,然后运行该pip install <package_name>
命令。
您可以通过从
官方 python.org 网站下载安装程序并运行来升级您的 Python 版本。
如果出现提示,请务必勾选以下选项:
- 为所有用户安装启动器(推荐)
- 将 Python 添加到 PATH(这会将 Python 添加到您的 PATH 环境变量)
如果包不支持最新的 Python 版本,您可以下载该包支持的特定 Python 版本。
“寻找特定版本”表中提供了不同的版本
。
尝试在详细模式下运行 pip install
如果这些建议都没有帮助,请尝试pip install
在详细模式下运行命令。
pip install requests -vvv pip3 install requests -vvv python -m pip install requests -vvv
该-v
选项代表详细模式,最多可以使用 3 次。
当pip install
命令以详细模式运行时,命令会显示更多输出以及错误发生的方式。
结论
要解决错误“元数据生成失败。生成包元数据时遇到错误”,请确保:
- 您的
pip
和setuptools
版本都是最新的。 - 您尝试安装的包支持您的 Python 版本。
- 您没有拼错包的名称。
- 您没有任何缺失的依赖项。
Psycopg2 错误:Python 中的元数据生成失败
这是解决特定包错误的示例 – psycopg2
。
安装 psycopg2 时出现“metadata-generation-failed”错误的原因有多种:
- 没有
psycopg2
安装依赖项。 - 拥有过时版本的
pip
,setuptools
或wheel
. - 拥有不受
psycopg2
.
pip install psycopg2-binary note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> See above for output.
如果您使用的是 Debian (Ubuntu),请在安装psycopg2-binary软件包之前安装先决条件
。
sudo apt-get install gcc libpq-dev python3-dev
如果您使用的是 macOS,请确保您已openssl
安装。
# 👇️ install openssl brew install openssl # 👇️ add it to your LIBRARY_PATH env variable export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/
该openssl
位置可能因您的操作系统而异,但最常见的是:
/usr/local/opt/openssl/lib/
/opt/homebrew/opt/openssl/lib
pip
升级您的,setuptools
和版本wheel
pip
更新您的、setuptools
和版本wheel
。
pip install --upgrade pip pip3 install --upgrade pip pip install --upgrade setuptools wheel pip3 install --upgrade setuptools wheel
现在已pip
升级,请尝试运行该pip install psycopg2-binary
命令。
# 👇️ first, uninstall psycopg2 first pip uninstall psycopg2 pip install psycopg2-binary pip3 install psycopg2-binary python -m pip install psycopg2-binary python3 -m pip install psycopg2-binary # 👇️ for Anaconda conda install -c conda-forge psycopg2-binary
psycopg2 -binary模块是一个独立的包,不需要编译器或外部库。
如果这没有帮助,请使用该--pre
选项来包括包的预发布和开发版本。
pip install psycopg2-binary --pre pip3 install psycopg2-binary --pre python -m pip install psycopg2-binary --pre python3 -m pip install psycopg2-binary --pre
该--pre
选项使其pip
包含该包的预发布版本和开发版本。默认情况下pip
仅查找稳定版本。
wheel
如果错误未解决,请尝试pip install
使用该选项运行命令
--no-use-pep517
。
pip install --no-use-pep517 psycopg2-binary pip3 install --no-use-pep517 psycopg2-binary python -m pip install --no-use-pep517 psycopg2-binary python3 -m pip install --no-use-pep517 psycopg2-binary
检查包是否支持你的Python版本
安装时出现错误psycopg2
有时是因为您尝试安装的包不适用于wheels
您的 Python 版本。
您可以使用以下python --version
命令检查您的 Python 版本。
python --version
您可以在包的 pypi 页面的下载文件部分检查包是否具有可用于特定 Python 版本的轮子。
cp310
“Built Distributions”下的文件名称表示特定操作系统支持 Python 版本 3.10。如果这些.whl
文件不适用于您的 Python 版本,您可以下载旧版本。
如果包不支持最新的 Python 版本,您可以下载该包支持的特定 Python 版本。
“寻找特定版本”表中提供了不同的版本
。
如果出现提示,请务必勾选以下选项:
- 为所有用户安装启动器(推荐)
- 将 Python 添加到 PATH(这会将 Python 添加到您的 PATH 环境变量)
尝试在详细模式下运行 pip install
如果这些建议都没有帮助,请尝试pip install
在详细模式下运行命令。
pip install psycopg2-binary -vvv pip3 install psycopg2-binary -vvv python -m pip install psycopg2-binary -vvv python3 -m pip install psycopg2-binary -vvv
该-v
选项代表详细模式,最多可以使用 3 次。
当pip install
命令以详细模式运行时,命令会显示更多输出以及错误发生的方式。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: