pip:没有名为_internal的模块


97

我尝试以任何方式使用pip时遇到问题。我正在使用Ubuntu 16.04.4

我应该说我已经使用过它,并且从未遇到任何问题,但是从今天开始,当我使用任何命令时,我总是会遇到相同的错误(例如使用的示例pip --upgrade)。

Traceback (most recent call last):
  File "/usr/local/bin/pip", line 7, in <module>
    from pip._internal import main
ImportError: No module named _internal

我尝试了sudo apt-get remove python-pip之后,sudo apt-get install python-pip但没有任何改变。


确保/usr/local/lib/pythonX.X/site-packages先于/usr/lib/pythonX.X/site-packages$PATH
hoefling

这里同样的问题。您找到解决方案了吗?
WayBehind '18

3
@WayBehind我确实找到了解决方案。我注意到使用python -m pip一切都很好。除此之外,我删除了文件/usr/local/bin/pip,现在调用pip -Vreturn pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)。一切似乎都按预期进行。
Grimdrem

我仍然有同样的问题,我在conda环境python 2.7中使用pip,并且在pip install ipdb中使用。有什么想法吗?
Garvita Tiwari

1
按照步骤加上-H标志:sudo -H python3.7 get-pip.py --force-reinstall
Andres Leon Rangel,

Answers:


110

这为我做到了:

python -m pip install --upgrade pip

环境:通过brew安装OSX && Python


6
谢谢,这是使用python3的解决方案。
Furbeenator

2
这对我没有用。@Grimdrem所做的是我最终要做的。我以前曾经安装过pip(使用sudo或其他东西)...我的升级是通过--user完成的,所以其他安装仍然挂在...从/ usr / local / bin和我的文件中删除它主要的python的package文件夹(不是--user)完成了这个任务。
user1269942 18-10-29

奇怪的是,这也已在此处修复。我打算将#searx升级到最新提交。
罗兰

在WSL的Ubuntu上运行此功能。我也使用了pyenv,但是以某种方式使vim使用的系统python变了。这将事情放到需要的地方,现在taskwiki又可以工作了。ew!
丹尼尔·布莱克

谢谢,这对我
有用

62

askUbuntu的回答有效。

对于pip2.7,您可以首先安装curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py,然后python2.7 get-pip.py --force-reinstall重新安装pip。

问题解决了。也适用于python3。


6
这对我不起作用,我已经尝试了几次
克利夫·格林

1
我已经通过重新安装python来解决了这一问题,因为我以前没有任何模块,这是一个绝对的痛苦
Cleve Green,

只是被这个问题所咬,似乎有点集群apt-get install python-pip无法在16.04.4上运行,而您求助于二进制Blob安装程序?

1
使它工作,我不得不删除我所有的系统侧 PIP事情:apt-get remove python-pip-whl

“没有权限”。您可能需要使用sudo。大多数发行版不允许原始用户在整个范围内安装pip系统。
塞林

21

此解决方案适用于我:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall

或使用sudo获得更高的权限(sudo python3 get-pip.py --force-reinstall)。

当然,您也可以使用python代替python3;)

资源


19

请参阅此问题列表

sudo easy_install pip

在Mac OS下为我工作

对于python3,可以尝试sudo easy_install-3.x pip取决于python 3.x版本。要么python3 -m pip install --user --upgrade pip


1
那是旧的Python2。至少在Python3 Ubuntu上,您还应该运行sudo easy_install-3.4 pip或类似版本。
NoBugs

11

在文件“ / usr / local / bin / pip”中更改 from pip._internal import mainfrom pip import main


9

此问题可能是由于普通用户没有访问软件包py文件的特权。
1. root用户可以运行“ pip list”
2.其他普通用户不能运行“ pip list”

[~]$ pip list
Traceback (most recent call last):
  File "/usr/bin/pip", line 7, in <module>
from pip._internal import main
ImportError: No module named pip._internal

检查pip py文件特权。

[root@]# ll /usr/lib/python2.7/site-packages/pip/  
合計 24  
-rw-------  1 root root   24  6  7 16:57 __init__.py  
-rw-------  1 root root  163  6  7 16:57 __init__.pyc  
-rw-------  1 root root  629  6  7 16:57 __main__.py  
-rw-------  1 root root  510  6  7 16:57 __main__.pyc  
drwx------  8 root root 4096  6  7 16:57 _internal  
drwx------ 18 root root 4096  6  7 16:57 _vendor  

解决方案:root用户登录并运行

chmod -R 755 /usr/lib/python2.7 

解决此问题。


最后,对问题的实质进行逻辑解释。重新安装可能会解决该问题,但这是一开始无法正常工作的真正原因。
Maxime Viargues

6

为了完整起见,我刚遇到了“ Ubuntu Latest”问题……v18.04 ...,并通过以下方式解决了该问题:

python3 -m pip install --upgrade pip

(注意,必须指定,python3因为它引用了Python 3.6.9。python同一系统上的命令引用了Python 2.7.17。由于这显然是系统范围的安装,因此它遇到了[“ not sudo” ...]权限。错误,但这没关系,因为无论如何都是错的。我遇到了pip3。)问题。


no such option: --uprade在您的命令上收到了错误-所以我运行了python3 -m pip install pip它:)
Xerus,

5

PYTHONPATH设置为包含内置site-packages目录时,我已经看到了此问题。由于Python自动出现在那儿,因此没有必要,可以将其删除。


2
这为我解决了,谢谢。我只是将$ PYTHONPATH保存在某个地方,然后运行export PYTHONPATH=""以使pip工作。
ibowman

但是,当尝试echo $ PYTHONPATH时,不包括站点软件包。
alyssaeliyah

在使用模块管理软件包的系统上构建虚拟环境时,我遇到了此问题。当我加载您时,请说“ module load python / 3.5.2”,它会将您的前置PYTHONPATH。然后,当我激活虚拟环境时,它永远不会取消设置PYTHONPATH,这意味着它找到了系统级别,pip而不是我的virtualenv中的系统级别。
irritable_phd_syndrom,

4

我只是遇到了同样的问题,以我为例,事实证明这是我的virtualenv中的python安装与站点范围的python(Ubuntu)之间的冲突。为我解决的是以这种方式运行pip,以强制使用正确的python安装(在我的vortualenv中):

python3 -m pip install PACKAGE

代替

pip3 install PACKAGE

当我尝试遵循一些建议重新安装pip的答案时,我意识到了这一点,尽管我已经激活了virtualenv,但我收到的错误输出却指向现有的站点范围内的python库路径。值得一试,然后再删除并重新安装东西。


如该答案stackoverflow.com/a/50737296/1340995中所述,这是一个权限问题。我发现使用pip with也python3 -m pip可以解决此问题,可能是因为它python具有执行权限,并且不需要pip具有+ x权限,因为它只是加载文件而没有执行。
Maxime Viargues

3

您使用的是python2还是python3?以下命令可能有所不同!

  1. 用于python3 -m pip --version查看是否已安装pip。
  2. 如果是,请运行python3 -m pip install --upgrade pip
  3. 如果否,请运行sudo apt-get install python3-pip,然后再次执行。

3

它可能是由于版本冲突所致,请尝试运行此命令,它将以某种方式删除较旧的点。

sudo apt remove python pip

对于它的价值,这似乎是为解决一个Debian般的发行版(比如,Ubuntu的16.04),其中python-pip包安装在发行水平,并get-pip.py已用于用户特定版本,pip这也是在$PATH。我选择sudo apt-get removepython-pip软件包(2.7),并在〜/ .local / bin中使用了该软件包。没有更多错误消息。
TheDudeAbides


2

我通过运行以下命令解决了此错误:

sudo apt remove python-pip
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py

它将删除先前安装的pip并重新安装。谢谢 :)


1

以下解决方案在我的机器上为python2.7解决了问题:“ $ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py”,然后是“ $ sudo python2.7 get-pip .py --force-reinstall“


1
这对我有用,但是您必须将其更改为正在使用的python版本。须藤python3 get-pip.py --force-reinstall。大。
alyssaeliyah

1

仅对于当前用户:

easy_install --user pip

要么

python -m pip install --upgrade --user pip

第二个可能会给出/usr/bin/python: No module named pip 即使which pip找到名为pip的模块。在这种情况下,请尝试easy_install


1

当我尝试通过pip3安装软件包时,在Windows上遇到了相同的错误:

Traceback (most recent call last):
  File "d:\anaconda\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "d:\anaconda\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "D:\Anaconda\Scripts\pip3.6.exe\__main__.py", line 5, in <module>
ModuleNotFoundError: No module named 'pip._internal'

我的python是通过Anaconda安装的。我通过conda重新安装pip解决了这个问题:

conda install pip

之后,pip恢复正常。


0

什么都没有对我有用,但只有一件事:我在命令前使用了sudo,它工作正常。


我的案子很奇怪,因为“ sudo”仍然给了我同样的错误。我必须切换到根目录(ubuntu上的sudo su)才能进行pip3.5列表和pip3.5安装:|
jmng

0

在将python安装从3.6升级到3.7后,我在虚拟环境中存在相同的问题,但仅在vent全局pip上可以正常工作,要解决此问题,请在重新创建后停用并删除我的虚拟环境,现在在venv上可以了:

deactivate
rm -rvf venv 

然后重新创建虚拟环境。我使用mac OS 10.11和python 3


0

(在Windows上)不确定为什么会这样,但是我的PYTHONPATH设置指向安装了python的c:\ python27。与virtualenv结合使用会产生上述错误。

通过一起删除PYTHONPATH env var来解决


0

我的解决方案:像大多数其他答案一样的第一步:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python2.7 get-pip.py --force-reinstall

第二,添加软链接

sudo ln -s /usr/local/bin/pip /usr/bin/pip


0

您可以先将其删除,然后重新安装,即可。对于centos:

yum remove python-pip
yum install python-pip

0

我通过解决这个问题

sudo apt-get install python3-pip

这甚至适用于python2.7,令人惊讶...


0

我的解决方案是添加import pip到链接到pip/pip3命令的脚本。

首先,/usr/local/bin/pip使用您喜欢的文本编辑器和sudo模式打开文件(例如)。例如,我sudo vim /usr/local/bin/pip用来打开脚本文件。

您将获得一些文件,如下所示:

import re
import sys

from pip._internal import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

然后,在问题解决import pip之前插入该语句from pip._internal import main


0

这些通常来自使用pip来“更新”系统安装的pip,和/或在用户下具有多个pip安装。我的解决方案是清除用户下已安装的多个pip,重新安装pip repo,然后如上所述进行“ pip install --user pip”。

请参阅:https//github.com/pypa/pip/issues/5599,以获取正式的完整讨论以及针对该问题的修复程序。


0

我尝试了以下命令来解决此问题,它对我有用:

curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
python3 get-pip.py --force-reinstall
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.