【问题标题】:Pip cannot find metadata file - EnvironmentErrorPip 找不到元数据文件 - EnvironmentError
【发布时间】:2019-06-30 07:58:00
【问题描述】:

每当我在 Ubuntu 16.04 中运行 pip 来安装像 virtualenv 这样的 Flask 包时,我都会收到此错误:

pip install virtualenv

Requirement already satisfied: virtualenv in ./.local/lib/python3.5/site-packages (16.1.0) No metadata found in ./.local/lib/python3.5/site-packages Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/usr/.local/lib/python3.5/site-packages/virtualenv-16.1.0.dist-info/METADATA'

这是我的 pip 和 python 版本:

pip --version pip 19.0.1 from /usr/.local/lib/python3.5/site-packages/pip (python 3.5)

python3 --version Python 3.6.8

我已经尝试了几乎所有从互联网上获得的方法来解决这个问题,例如:

/usr/.local/bin/pip install virtualenv

但我仍然遇到同样的错误。

我也进入 dist 文件夹复制 metadata.json 和 METADATA,但是里面没有 metadata.json 文件。

cd /usr/.local/lib/python3.5/site-packages/virtualenv-16.1.0.dist-info/ cp metadata.json METADATA

cp: cannot stat 'metadata.json': No such file or directory

请帮助我,我被这个问题困扰了好几天。 谢谢!

【问题讨论】:

  • 这个问题的根本原因是什么?

标签: python python-3.x pip virtualenv ubuntu-16.04


【解决方案1】:

我认为您的错误根源在于您的 pip 配置为使用 Python3.5(并在其特定的 Pythonpath 中查找元数据),而您的 Python 版本是 3.6.8

在我看来,Python 3 中的虚拟环境通过使用内置的venv 变得更加简单。此外,您的 Python 和 Flask 版本应该一致,这里是,不是这种情况。

我建议您采取以下步骤

python3 -m venv /path/to/new/virtual/environment

  • 通过
  • 激活虚拟环境
cd /path/to/new/virtual/environment
source env/bin/activate

您现在拥有一个独立的、干净的环境,其中只有一个 Python 版本。

  • 运行 pip install --upgrade pip 将虚拟环境 pip 升级到与您的 Python 版本兼容的版本。

  • 运行pip install flask,从头开始安装整个堆栈,以便库和 Python 可执行版本对齐。

【讨论】:

  • 执行python3 -m venv /path/to/my/new/venv时出现此错误:Error: Command '['/usr/path/to/my/new/venv/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
  • /path/to/my/new/venv 应该是您希望创建虚拟环境的路径。它可能类似于~/myawesomeproject~/flaskapp。你想在哪里创建你的环境?你对该目录有写权限吗?
  • 是的,特别是这里 ~/dashboard。我输入了python3 -m venv ~/dashboard/ 然后错误返回上面的/home/zhanrah/dashboard/venv/bin/python3
  • 问题应该是存在的venv版本也与Python不兼容,并且卡在了3.5,因为它也是reported by others。您可以尝试使用sudo apt-get install python3.6-venv 更新它并报告结果吗?
  • 这是我更新后得到的:Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: apache2-bin libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0 Use 'sudo apt autoremove' to remove them.
【解决方案2】:

我最近遇到了同样的问题。

Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '~/.local/lib/python3.7/site-packages/pip-19.0.1.dist-info/METADATA'

在文件夹中

~/.local/lib/python3.7/site-packages/pip-19.0.1.dist-info/

我找到了另一个名为pip-19.0.1.dist-info 的文件,最后一个包含pip 所需的所有文件。

我刚用过

cd ~/.local/lib/python3.7/site-packages/pip-19.0.1.dist-info/
cp -r ./pip-19.0.1.dist-info/* ./
rm -r ./pip-19.0.1.dist-info

显然您需要将python 版本替换为您自己的版本并检查是否有文件

entry_points.txt  INSTALLER  LICENSE.txt  METADATA  RECORD  top_level.txt  WHEEL

在这里。

也许它会帮助你,运气。

【讨论】:

  • 谢谢!我持有损坏的软件包,所以在尝试之后,我收到一个新错误,上面写着:Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/usr/.local/lib/python3.5/site-packages/virtualenv-16.1.0.dist-info/RECORD' 我唯一的选择是重新安装我的 Ubuntu 以进行全新设置。不管怎么说,还是要谢谢你!这可能是其他人的解决方案。
【解决方案3】:

我遇到了同样的错误

Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/home/vagrant/.local/lib/python3.7/site-packages/pip-18.1.dist-info/RECORD'

好像/usr/bin/pip和/home/vagrant/.local/lib/python3.7/有冲突。

我的解决方案是避免错误。

  • 点冻结> requirements.txt
  • 我删除了 /home/user/.local/lib/python3.7 目录
  • sudo pip install --upgrade pip
  • pip install -r requirements.txt --user
  • 已修复

【讨论】:

    【解决方案4】:

    我刚刚使用 Python 3.6.5 和 pip 19.2.3 遇到了这个问题。我对使用这里的解决方案(以及类似的 SO 问题)犹豫不决,所以我尝试了以下方法并解决了问题:

    pip install --force-reinstall package_with_metadata_issue

    请注意,我的案例抱怨 black 包,这是我尝试安装的其他东西的依赖项(使用简单的 pip install other_package)。 Black 已经在我的系统上安装并运行了一段时间,所以不清楚它是如何进入错误状态的,或者 pip 发生了什么变化,导致它无法处理包的状态。

    具体来说,OP可以尝试:

    pip install --force-reinstall virtualenv

    虽然这里的许多其他人似乎都对 pip 本身有问题,所以这可能只是在 pip 处于良好状态之前将罐子踢下去。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题

      ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/root/anaconda3/lib/python3.6/site-packages/tornado-6.0.4.dist-info/METADATA
      

      那我cd /root/anaconda3/lib/python3.6/site-packages/tornado-6.0.4.dist-info/ && ls

      DESCRIPTION.rst  LICENSE.txt  metadata.json
      

      最后,我做到了cp metadata.json METADATA 解决了这个问题。 也许这对你有帮助。

      【讨论】:

        【解决方案6】:

        conda install -c conda-forge requests 解决了我的问题。当然,您需要重新安装对您有问题的软件包。使用 pip 重新安装它对我不起作用。

        【讨论】:

          猜你喜欢
          • 2022-10-20
          • 2013-10-24
          • 2010-11-28
          • 2015-05-13
          • 2018-10-05
          • 1970-01-01
          • 1970-01-01
          • 2017-11-06
          相关资源
          最近更新 更多