[英]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.