【问题标题】:Messed up pip environment and unable to python import modules搞砸了 pip 环境,无法 python 导入模块
【发布时间】:2019-05-28 15:39:17
【问题描述】:

我的python相关版本和路径如下

pip -V

输出

pip 19.1.1 from /home/USER_NAME/.local/lib/python3.6/site-packages/pip (python 3.6)
which pip

输出

/home/USER_NAME/.local/bin/pip
python -V

输出

Python 3.6.7
which python

输出

/home/USER_NAME/bin/python

问题是我使用了几种方法来更新 pip 并且一切都搞砸了。所以现在我可以使用 python 模块,即使它们是使用 pip 安装的。示例

pip install requests 

Requirement already satisfied: requests in /usr/lib/python3/dist-packages (2.18.4)

但是当我在 python 代码中导入请求时,我得到了这个

Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'requests

原因是 pip 链接到.local 目录如何解决这个我尝试卸载 pip 并重新安装但没有帮助。感谢您的帮助

【问题讨论】:

  • 你看过这个answer
  • 你可能安装了两个 python,pip 可能安装在不同的 Python 中然后你运行。检查您是否有.local/bin/python。您还应该有pip3pip3.6,它们可以安装在正确的Python 中。或者您可以使用python -m pip install requests。它可能需要使用sudo 安装在全局文件夹而不是.local 目录中。
  • @furas 当我使用 sudo 时,默认的 python 和 pip 是 python 2.7。所以没有运气

标签: python python-3.x python-2.7 ubuntu pip


【解决方案1】:

即使哪个 python 显示 /home/USER_NAME/bin/python 因为它符号链接到位于 /usr/bin/ 中的全局范围 python 但是 pip 安装在用户的本地范围内(/home/$USER/.local/bin/)。所以当你运行时

pip install requests 它检查/home/$USER/.local,因此满足要求。

解决方案是,pip 和 python 都应该在同一个范围内(无论是在全局范围内还是在用户范围内)

您可以卸载本地 pip (pip uninstall pip) 并使用全局 pip 和全局范围 python

在删除$HOME/bin/python 中的当前符号链接后,您可以将/home/$USER/bin/python 符号链接到本地​​用户范围python (ln -s /home/$USER/.local/bin/python3 /home/$user/bin/python)

【讨论】:

  • pip uninstall pip 工作,是的,只是删除旧的符号链接也解决了 python。非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-28
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多