[英]Python `no module pip.__main__;` error when trying to install a module
我的 Raspberry Pi 出现以下错误: No module named pip__main__; 'pip' is a package and cannot be directly executed
No module named pip__main__; 'pip' is a package and cannot be directly executed
当我在终端输入时: sudo python3 -m pip install mp3play
这是什么原因造成的,我该如何修复它以便我可以安装模块mp3play
?
Pip不仅是一个独立的可执行文件,它也是一个python模块。
实际上在python文档中,它直接建议使用-m
语法来使用pip安装包。
请参阅https://docs.python.org/3.5/installing/index.html#basic-usage :
标准打包工具都设计为从命令行使用。
以下命令将从Python Packaging Index安装最新版本的模块及其依赖项:
python -m pip install SomePackage
我的猜测是你的系统的pip
(可执行文件)被pip
可执行文件的python2版本所掩盖。 但是听起来你没有安装pip(模块)这样你的python3可执行文件就可以找到它,所以你可能需要专门重新安装pip(模块)。
对于那个使用python3 -m ensurepip
( docs for ensurepip ),如果你的python3解释器的persepctive不存在pip将安装pip。
另一个问题可能是它在当前目录中找到了一个名为pip
的文件,可执行文件或目录,并且它试图将该pip
视为一个模块,它实际上并不是一个模块。
如果不是我不确定。 但绝对不是因为pip不是模块。
pip
是一个独立的可执行文件。 如果pip
if在你的路径中,你可以执行
pip install mp3play
如果pip
不在您的路径中,那么您需要导航到pip
所在的目录,然后执行上面的操作。
如果需要,请在命令中添加sudo
。
遇到的确切错误是由于pip
是一个包,但-m
用于执行模块。
编辑: pip
还附带了几个有用的别名函数,指向不同的Python安装。 一般来说, pip
指向你的主要Python安装(你在简单地执行python
时输入的pipV
), pipV
其中V
是一个数字,如2
或3
将安装添加到你的主要版本V
( pip3
添加到你的python3
环境) 。 最后有pipV.S
其中V
与之前相同, S
是颠覆。 例如,Python 3.4的pip3.4
安装。
我有同样的问题。 我发现旧的pip目录是从python 2.7安装中遗留下来的,位于C:\\Users\\my-username\\pip
。 这导致python尝试从那里加载pip并失败。
我删除了该目录,我的错误就变成了No module named pip
。
我还没有解决问题,但我正在http://bugs.python.org/issue29586处理它
我有同样的问题,之前的答案都没有为我解决。
当我卸载并重新安装python到我的电脑时出现错误。 因为看起来先前现有的pip版本没有完全删除,当我试图用python -m pip install package
导入它时,它实际上是试图调用以前的版本。
要解决此问题,请先手动删除以下位置的pip文件夹:
C:\Users\username\pip
C:\Users\username\AppData\Local\pip
C:\Users\username\AppData\Local\Programs\Python\Python**\lib\site-packages\pip***
C:\Python**\pip
然后下载get-pip.py 。
最后,导航到下载它的文件夹并运行:
python get-pip.py
此过程应重新安装pip并解决问题。
当现有的 pip 模块在升级时可能会受到影响时,就会发生这种情况。
您可能会在site-packages
观察到,任何需要的文件/文件夹都已重命名为前导~
,例如pip
更改为~ip
或带有前导~
的子文件夹。
因此,在引用模块 pip 时,如果找不到所需的可执行文件。
出现这种情况的原因是读:
卸载软件包时,pip 现在会将其重命名为无法导入的名称,并且一旦确认一切都会成功(包括在进行升级时安装新版本),它才会删除这些文件夹。 如果出现故障,它会将它们重新命名。
除了@Djib2011的解决方案之外,您还可以使用全新安装pip模块:
py <-version> -m ensurepip --upgrade
其中<-version>
是一个可选参数,可以替换为您遇到问题的 python 版本,例如-3.8
。
Python自带了一个ensurepip模块,可以在Python环境中安装pip。 这将安装 pip 模块,该模块最初与您一直使用的 python 版本一起打包。
发布您可以运行升级命令将 pip 移植到较新版本的帖子。
py <-version> -m pip install --upgrade pip
如果由于许可而遇到任何EnvironmentError
则可以附加--user
选项。
参考:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.