错误:元数据生成失败。生成包元数据时遇到错误

目录

Error: metadata-generation-failed. Encountered error while generating package metadata

  1. 错误:元数据生成失败。生成包元数据时遇到错误
  2. Psycopg2 错误:Python 中元数据生成失败

错误:元数据生成失败。生成包元数据时遇到错误

出现错误“元数据生成失败。生成包元数据时遇到错误”的原因有多种:

  1. 有一个过时的版本pipsetuptools
  2. 您尝试安装的包不支持 Python 版本。
  3. 包裹名称拼写错误。
  4. 缺少依赖项。

错误元数据生成失败遇到错误

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

更新setuptoolswheel

升级后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 版本的支持。

检查包是否支持你的Python版本

Google 查找包的名称并检查该包是否支持您的 Python 版本。

例如,如果我在 google 上搜索“requests pypi”并单击
pypi.org页面,我可以在左侧边栏中的Meta>下看到受支持的 Python 版本Requires

按包支持的 python 版本

截图显示该包支持Python 3.7+。

如果您的Python版本不满足要求,则会出现错误。

您的错误消息可能包含类似“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 版本。

“寻找特定版本”表中提供了不同的版本

安装特定的python版本

尝试在详细模式下运行 pip install

如果这些建议都没有帮助,请尝试pip install在详细模式下运行命令。

pip install requests -vvv pip3 install requests -vvv python -m pip install requests -vvv

-v选项代表详细模式,最多可以使用 3 次。

pip install命令以详细模式运行时,命令会显示更多输出以及错误发生的方式。

结论

要解决错误“元数据生成失败。生成包元数据时遇到错误”,请确保:

  1. 您的pipsetuptools版本都是最新的。
  2. 您尝试安装的包支持您的 Python 版本。
  3. 您没有拼错包的名称。
  4. 您没有任何缺失的依赖项。

Psycopg2 错误:Python 中的元数据生成失败

这是解决特定包错误的示例 – psycopg2

安装 psycopg2 时出现“metadata-generation-failed”错误的原因有多种:

  1. 没有psycopg2安装依赖项。
  2. 拥有过时版本的pip,setuptoolswheel.
  3. 拥有不受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仅查找稳定版本。

这有时会有所帮助,因为包的预发布版本可能适用于您的 Python 版本。 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

获取 python 版本

您可以在包的 pypi 页面的下载文件部分检查包是否具有可用于特定 Python 版本的轮子。

例如,cp310“Built Distributions”下的文件名称表示特定操作系统支持 Python 版本 3.10。

如果这些.whl文件不适用于您的 Python 版本,您可以下载旧版本。

如果包不支持最新的 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命令以详细模式运行时,命令会显示更多输出以及错误发生的方式。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: