ใช้ Pip3 ImportError: ไม่สามารถนำเข้าชื่อ 'main'


21

ฉันต้องการติดตั้ง Scipy (ติดตั้ง Numpy ไว้แล้ว) ฉันติดตั้ง Python 3.5.1-3 กับระบบปฏิบัติการและ IDLE3 (3.5.2) เมื่อฉันตีในสถานี

sudo pip3 install scipy

มันพิมพ์ออกมา

Traceback (most recent call last):
File "/usr/bin/pip3", line 9, in <module>
from pip import main
ImportError: cannot import name 'main'

ฉันได้ลองติดตั้ง pip3 แล้วเริ่มระบบปฏิบัติการใหม่ แต่ก็ไม่เปลี่ยน pip3 ทำงานร่วมกับคนอื่นอย่างประหลาดหรือไม่?

คำตอบ:


10

numpy และ scipy อยู่ในที่เก็บเริ่มต้นของ Ubuntu ทุกรุ่นที่รองรับในปัจจุบัน ในการติดตั้ง numpy และ scipy สำหรับ Python 3.x ให้เปิดเทอร์มินัลแล้วพิมพ์:

sudo apt update    
sudo apt install python3-numpy python3-scipy  

สำหรับ Python 2.x มันคือ:

sudo apt update  
sudo apt install --no-install-recommends python2.7-minimal python2.7 # this line is only necessary for Ubuntu 17.10 and later 
sudo apt install python-numpy python-scipy

1
python3-scipy ทำงานได้ดี ขอบคุณ!
หมาหมู Invertible Hog

1
ในฐานะที่เป็นรัฐอื่นคำตอบคำตอบนี้ไม่เกี่ยวข้องกับปัญหาพื้นฐานซึ่งเกี่ยวข้องกับ pip
cjauvin

มันเป็นวิธีที่ไม่ดี ...
darkwoolf

26

ใช้python -m pip installแทนpip install

ตัวอย่าง:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

ฉันเริ่มได้รับปัญหานี้หลังจากการpipอัพเกรด:

pip install --upgrade --user pip

ปฏิบัติการpip(resp. pip3) จัดทำโดย distro ของคุณ ( python-pipแพ็คเกจบน Ubuntu 16.04)

ดังนั้นจึงไม่ได้รับการอัปเดตpipแพ็กเกจปัจจุบันในขณะที่คุณอัพเกรด pip และอาจแตก

หากคุณใช้python -m pipโดยตรงเช่นใน:

python -m pip install --user somepackage
python3 -m pip install --user somepackage

มันจะผ่านเส้นทาง Python ของคุณและค้นหา pip เวอร์ชันล่าสุดและเรียกใช้ไฟล์นั้น

มันขึ้นอยู่กับความจริงที่ว่าไฟล์นั้นสามารถเรียกใช้งานได้ แต่เป็นอินเตอร์เฟซมาตรฐานที่มีมาตรฐานมากดังนั้นจึงมีโอกาสน้อยที่จะทำลายได้มากกว่าสคริปต์ Debian ของแฮกเกอร์

จากนั้นฉันแนะนำให้เพิ่มชื่อแทนต่อไปนี้ใน.bashrc:

pip() ( python -m pip "$@" )
pip3() ( python3 -m pip "$@" )

/usr/bin/pip3ไฟล์Ubuntu 18.04 ทำ:

from pip import main

และน่าจะmainถูกลบออกจากpipบางจุดซึ่งเป็นสิ่งที่แตก

การแบ่งจุดแบ่งที่ดูเหมือนจะเป็น: 95bcf8c5f6394298035a7332c441868f3b0169f4 "ย้าย API ภายในทั้งหมดไปยัง pip._internal"ซึ่งเข้าไปใน pip 18.0

ทดสอบใน Ubuntu 16.04 หลังจากอัพเดตจากpip39.0.1 เป็น 18.0

pyenv

อย่างไรก็ตามในที่สุดสำหรับการพัฒนา Python อย่างจริงจังฉันขอแนะนำให้คุณติดตั้ง Python ในพื้นที่ของคุณเองด้วย pyenv + virtualenv ซึ่งจะแก้ไขข้อผิดพลาดของ Ubuntu นี้: ฉันจะติดตั้ง Python เวอร์ชั่นอื่นโดยใช้ apt-get ได้อย่างไร?


1
ดังนั้นสิ่งนี้จึงใช้ได้ แต่ฉันไม่สามารถเป็นคนเดียวที่ส่ายหัวของฉันได้ที่นี่ การสลายอยู่ที่ไหน เหตุใดการอัปเกรด pip เริ่มต้นจึงล้มเหลวในการตั้งค่า pip ใหม่ในวิธีที่มันใช้งานได้ต่อไป
Steven Lu

@StevenLu ความเข้าใจของฉันอยู่ที่/usr/bin/pipจัดทำโดยแพ็คเกจ Ubuntu Python และpipไม่ได้เขียนทับมัน แต่pip updateจัดการด้วยpipตัวเองและหลีกเลี่ยงการสัมผัสไฟล์ Ubuntu
Ciro Santilli 新疆改造中心法轮功六四事件

สวัสดีประสบการณ์เดียวกันที่นี่ Pip3 จะไม่ทำงานไม่สำคัญว่าฉันทำอะไร วิธีนี้ใช้ได้ผล แต่ทำไมล่ะ? สคริปต์ ไพ ธ อนจัดทำโดยDebian- ความคิดเห็นพูดว่า: Run the main entry point, similarly to how setuptools does it, but because we didn't install the actual entry point from setup.py, don't use the pkg_resources API.บางทีอาจมีวิธีการติดตั้ง Python อย่างถูกต้องใน python-way
จะ

@ ฉันไม่แน่ใจเกี่ยวกับความคิดเห็นของเอกสารนั้น แต่ฉันแน่ใจว่ารหัสของ/usr/bin/pipทำอะไร :-)
Ciro Santilli 新疆改造中心中心法轮功六四事件

20

ข้อผิดพลาดที่พบใน pip 10.0.0

ใน linux คุณต้องแก้ไขไฟล์: / usr / bin / pip จาก:

from pip import main
if __name__ == '__main__':
    sys.exit(main())

สำหรับสิ่งนี้:

from pip import __main__
if __name__ == '__main__':
    sys.exit(__main__._main())

วิธีแก้ปัญหารูปแบบนี้ดูเหมือนจะไม่แนะนำโดยpipทีมงาน
jdk1.0

คุณบันทึกวันของฉัน !!
Saurabh Singh

8

ฉันมีปัญหาเดียวกัน แต่ถอนการติดตั้งและติดตั้งใหม่ด้วย apt และ pip ​​ไม่ได้ผลสำหรับฉัน

ฉันเห็นโซลูชันอื่นที่นำเสนอวิธีง่ายๆในการกู้คืนเส้นทาง pip3:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall

สิ่งนี้ปรับลดรุ่น pip3 ของฉันจาก 19.0.3 เป็น 8.1.1 แต่มันแก้ไขอาการได้
Hawkeye Parker

6

ในขณะที่ karel อาจแก้ไขปัญหา "ติดตั้ง numpy and scipy" ของคุณได้ แต่สิ่งที่ไม่ถูกต้องกับ pip ในระบบของคุณยังไม่ได้รับการแก้ไขดังนั้นคุณอาจมีปัญหาเพิ่มเติมเกี่ยวกับ pip ในการดำเนินการต่อไป

ดูที่นี่ดูเหมือนว่าจะเป็นปัญหาเมื่อเร็ว ๆ นี้ที่พบบ่อยเกี่ยวกับ pip 10 บนระบบ Ubuntu คุณอาจพบว่ามีบางงานในเธรดที่เหมาะกับคุณ แต่หวังว่าการอัปเดตจะแก้ไขได้ในไม่ช้า


ขอบคุณสำหรับการแก้ไขปัญหาที่เกิดขึ้นจริงและไม่ให้การทำงานที่แก้ปัญหาเพียงบางส่วนและสำหรับคนเพียงคนเดียว ...
Caleb Fenton

3

การติดตั้ง pip จากทั้ง apt และ pip ​​นั้นสามารถทำให้เกิดปัญหานี้ได้

ในกรณีของฉันฉันใช้แพ็คเกจ pip ของ Ubuntu เพื่อติดตั้ง pipenv ซึ่งติดตั้งสำเนา pip ใหม่ ตอนนี้เนื่องจาก shell ของฉันรันสคริปต์ pip 9 ของ Ubuntu (เพื่อตรวจสอบ run which pip3) และ Python interpreter ของฉันจากนั้นอิมพอร์ตโมดูล pip 10 คำสั่ง pip3 ล้มเหลว ดังนั้นฉันต้องการถอนการติดตั้งหนึ่งในสอง

มันยุติธรรมที่จะสมมติว่าคุณมี pip ที่ใหม่กว่าด้วยเหตุผล ในกรณีนั้นคุณต้องการถอนการติดตั้ง pip ที่เก่ากว่าเช่นนี้:

sudo apt remove python3-pip

ถ้าคุณรู้ว่าคุณใช้ pip เก่ากว่าและชอบแพ็คเกจระบบคุณจะต้องถอนการติดตั้งใหม่:

~/.local/bin/pip3 uninstall pip

หรือล้มเหลว

sudo /usr/local/bin/pip3 uninstall pip


1

ชนิด

hash -d pip3

สิ่งนี้ควรลบข้อผิดพลาดนี้


3
คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับคำตอบของคุณ: 'แฮช' คืออะไรและทำไมมันถึงลบข้อผิดพลาดออกไป?
Marc Vanhoomissen

1

กองทัพติดตั้ง pip ทำงานได้ดีสำหรับผู้ใช้ส่วนใหญ่ตามที่แสดงบนนี้หน้า GitHub:

python -m pip install --force-reinstall pip

ขอขอบคุณ. คำตอบก่อนหน้าทั้งหมดล้มเหลวอย่างน่าสังเวชในขณะที่คุณทำงาน
Pynchia

0

ปัญหาของฉันจบลงด้วยการไม่ตรงกันระหว่าง python3.6 และ 3.7 การติดตั้ง python3.6 ใส่ลิงค์เข้าไป/usr/bin/python3 -> /usr/bin/python3.6แม้ว่าระบบจะอัพเกรดเป็น python3.7

sudo apt purge python-pip
sudo apt purge python3-pip
sudo apt install python3.7 --reinstall
cd /usr/bin
sudo rm python3
sudo ln -s python3.7 python3
python3 --version
pip3 --version

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.