ImportError: ไม่สามารถนำเข้าชื่อหลักเมื่อรันคำสั่ง pip --version ใน windows7 32 บิต


145

ฉันได้ติดตั้งไพ ธ อนล่าสุด (2.7.9) ที่มาพร้อมกับ pip และ setuptools สำหรับ windows 32 บิต ฉันลองติดตั้ง pip แล้ว แต่ปัญหายังคงอยู่

นี่คือข้อผิดพลาดหลังจากทำงานpip --versionในผู้ดูแลระบบ cmd:

Traceback (most recent call last):
 File "D:\Python\lib\runpy.py", line 162, in _run_module_as_main
  "__main__", fname, loader, pkg_name)
 File "D:\Python\lib\runpy.py", line 72, in _run_code 
  exec code in run_globals
 File "D:\Python\Scripts\pip.exe\__main__.py", line 5, in <module>
ImportError: cannot import name main

1
อาจเกี่ยวข้องกับการอนุญาตของไฟล์มีปัญหากับงูหลาม 3.4 ที่นี่ซึ่งแก้ไขแล้วมันคุ้มค่ากับการตรวจสอบ
Kobi K

ฉันแก้ไขปัญหาโดยใช้คำสั่ง icacls แต่ข้อผิดพลาดยังคงมีอยู่
ไร้ประสิทธิภาพ

2
"easy_install -U pip" คำตอบให้อย่างstackoverflow.com/questions/28031277/...แกะ-URL
J1MF0X

คำตอบ:


172

แม้ว่าคำถามดั้งเดิมน่าจะมาจากปี 2015 แต่ข้อผิดพลาดนี้ดูเหมือนว่าจะส่งผลกระทบต่อผู้ใช้ที่ติดตั้งpip-10.0.0เช่นกัน

วิธีแก้ปัญหาไม่ใช่เพื่อแก้ไขpipแต่จะเปลี่ยนวิธีที่เรียกว่า pip แทนที่จะโทร/usr/bin/pipออกpipด้วย Python เอง ตัวอย่างเช่นแทนที่จะเป็นด้านล่าง:

pip install <package>

ถ้าจาก Python เวอร์ชัน 2 (หรือที่เรียกว่า Python แบบไบนารีเริ่มต้นpython) ให้ทำดังนี้

python -m pip install <package>

หรือถ้ามาจาก Python เวอร์ชั่น 3:

python3 -m pip install <package> 

ใช่ฉันจำไม่ได้ว่าฉันทำอะไรเพื่อแก้ไขปัญหานี้ แต่ฉันยังเปิดไว้สำหรับคนอื่น
Woootiness

เมื่อฉันใช้คำสั่งที่กำหนดฉันได้รับข้อผิดพลาดการอนุญาต (ที่ฉันได้รับหลังจากแก้ไข pip ตามคำตอบของ catalinpopescu) อย่างไรก็ตามเพื่อดาวน์โหลดแพ็คเกจสำหรับขอบเขตของผู้ใช้ (เพื่อให้คุณไม่จำเป็นต้องมีสิทธิ์การดูแลระบบ) ให้ใช้: python3 -m pip install install <package> --user (ทำงานกับ python3 ควรทำงานกับ python2 แม้ว่าจะไม่ได้ทดสอบ)
randmin

ช่วยฉันด้วย Mac
charles ross

คำตอบที่ดีกว่า การดัดแปลงซอร์สโค้ดนั้นเป็นพรุ
ozgur

นี่เป็นวิธีที่ดีมากที่จะไป นอกจากนี้ยังทำให้ง่ายต่อการรับความมั่นใจว่าคุณกำลังใช้เวอร์ชั่นที่ถูกต้อง:python2 -m pip install $package
JamesTheAwesomeDude

257

ข้อผิดพลาดที่พบใน 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())

1
ดูเหมือนว่านี่จะเป็นทางออก ฉันลองสิ่งนี้และก็ไม่มีปัญหา
Khue

2
ฉันใช้ pip 10.0.1 และข้อผิดพลาดยังคงอยู่ คุณแก้ปัญหาช่วยได้ ขอบคุณ! คุณรายงานข้อผิดพลาดนี้และวิธีแก้ปัญหากลับไปที่นักพัฒนาซอฟต์แวร์หรือไม่
Alexey Subach

7
แม้ว่าวิธีนี้ทำงานโปรดงดเว้นจากการปรับเปลี่ยนpipเอง ดูโซลูชันที่สะอาดกว่าด้านล่างเพื่อโทรpipจาก Python แทน
Wan Bachtiar

1
ไม่ช่วยใน "pip 10.0.1" pip --version pip 10.0.1 from /home/x/.local/lib/python2.7/site-packages/pip (python 2.7) การใช้งาน: sudo pip install tensorflow เอาท์พุท:Traceback (most recent call last): File "/usr/bin/pip", line 9, in <module> from pip import main ImportError: cannot import name main
user_x

3
@creepy_driver การแก้ไขแพ็กเกจที่ติดตั้งด้วยตนเองไม่เหมาะกับสภาพแวดล้อมไม่แนะนำให้ใช้เพราะครั้งต่อไปที่คุณอัปเดตเป็นเวอร์ชันอื่นนั่นคือ 10.0.3 คุณน่าจะพบปัญหาเดียวกัน วิธีแก้ปัญหาในการทำงานpipผ่าน Python ที่ติดตั้งจะชี้ pip เพื่อใช้สภาพแวดล้อมที่เหมาะสมอย่างถูกต้อง
Wan Bachtiar

60

บน Ubuntu Server 16 ฉันมีปัญหาเดียวกันกับ python27 ลองสิ่งนี้:

เปลี่ยนแปลง

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

ถึง

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

1
ทำงานบน Ubuntu 16.04
Sameera Kumarasingha

นี่ไม่ใช่ความคิดที่ดี ตามที่ระบุไว้ในคำตอบอื่นโดย @RichardElkins: "คนไม่ควรเสียเวลาแก้ไขไฟล์ที่ติดตั้งไม่ได้ตั้งใจที่จะแก้ไขหลังการติดตั้ง"
148919

20

ใน Windows 10 ฉันใช้คำสั่งต่อไปนี้เพื่อดาวน์เกรด pip:

python -m pip uninstall pip
python -m pip install pip==9.0.3

สิ่งนี้ควรทำงานบน Linux และ Mac ด้วย


1
มันควรจะเป็น python -m pip pip install == 9.0.3
elelias

@elelias โอ้ฉันไม่ได้ตระหนักถึงสิ่งนั้น ขอบคุณสำหรับบอกฉัน!
kiyah

1
ฉันต้องpython easy_install.py pip==9.0.3เพราะหลังจากบรรทัดแรกไม่พบ pip
Suzanne

3
ทำงานบน Linux และ Mac ด้วย มันเป็นการแก้ปัญหาจนกว่าจะแก้ไข pip / pip3 10 คนที่ไม่ควรเสียเวลาของพวกเขาแก้ไขไฟล์ที่ติดตั้งไม่ได้มีเจตนาที่จะแก้ไขหลังจากการติดตั้ง ..
ริชาร์ดเอลกินส์

ฉันมีปัญหาเส้นทางหลังจากการอัปเกรดฉันทำสิ่งต่อไปนี้เพื่อให้ทำงานได้ sudo python -m pip ถอนการติดตั้ง pip && sudo apt ติดตั้ง python-pip
webjockey

10

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

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

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

1
ฉันมี python 2.7 ดังนั้นฉันต้องเปลี่ยนคำสั่งให้ตรงกับ python 2.7 sudo python -m pip ถอนการติดตั้ง pip && sudo apt ติดตั้ง python-pip
webjockey

ทำงานได้อย่างสมบูรณ์บน Ubuntu แต่ฉันคิดว่ามันจะไม่ทำงานบน windows
zaki benz

8

ฉันแก้ไขปัญหาโดยติดตั้ง pip get-pip.pyใช้

  1. ดาวน์โหลด get-pip จากลิงค์ทางการ: https://pip.pypa.io/en/stable/installing/#upgrading-pip
  2. ทำงานโดยใช้ python get-pip.pyCommande:

และ pip ​​ได้รับการแก้ไขและทำงานอย่างสมบูรณ์


1
เปลี่ยน python get-pip-pyเป็น pythonget-pip.py
YourFriend

1
ทำงานอย่างสมบูรณ์แบบ! ขอบคุณ.
Shambo

ทำงานให้ฉันเช่นกัน ขอบคุณ
Abhishek Kishore

2

บน MacOS หากคุณติดตั้ง python ผ่าน Homebrew ให้เปลี่ยนบรรทัด /usr/local/opt/python/libexec/bin/pip

จาก

from pip.internal import main

ถึง

from pip._internal import main

หรือใช้ซับนี้: sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

คำอธิบาย:

ปัญหานี้เกิดจากการเปลี่ยนแปลงใน pip เวอร์ชัน 10 ที่ย้ายเนมสเปซภายในภายใต้main._internalและสคริปต์ถังขยะถูกวางโดย homebrew ยังคงค้นหาจากตำแหน่งเดิม (ซึ่งเคยเป็นเวอร์ชัน 9) ปัญหาและการสนทนาบางอย่างhttps://github.com/pypa/pip/issues/5240


1

หากคุณมีฮาร์ดลิงก์ไปยัง pip ในPATH(เช่นถ้าคุณติดตั้งงูหลามหลายรุ่น) และจากนั้นคุณอัพเกรด pip คุณอาจพบข้อผิดพลาดนี้

โซลูชันประกอบด้วยการสร้างฮาร์ดลิงก์อีกครั้ง หรือดียิ่งกว่านั้นให้หยุดใช้ฮาร์ดลิงก์และใช้ซอฟต์ลิ้งค์


1
จะแก้ไขได้อย่างไร?
user_x

1

ใน Windows 10 ฉันมีปัญหาเดียวกัน PIP 19ติดตั้งแล้วในระบบของฉัน แต่ไม่ปรากฏขึ้นมา No Module Foundข้อผิดพลาดคือ

python -m pip uninstall pip
python -m pip install pip==9.0.3

การลดระดับpipเป็น 9.0.3 ใช้งานได้ดีสำหรับฉัน



0

มันทำงานบน Ubuntu 16.04 ขั้นตอนที่ 1:

 sudo gedit /home/user_name/.local/bin/pip

ไฟล์จะเปิดขึ้นพร้อมกับเนื้อหา:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import main

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

เปลี่ยนmainไป__main__ตามที่ปรากฏด้านล่าง:

#!/usr/bin/python

# -*- coding: utf-8 -*-
import re
import sys

from pip import __main__

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

บันทึกไฟล์และปิด และคุณทำเสร็จแล้ว!


0

ลองนี้

#!/usr/bin/python
# GENERATED BY DEBIAN

import sys

# 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.i
try:
    from pip import main
except ImportError:
    from pip._internal import main
if __name__ == '__main__':
    sys.exit(main())

0

ทางออกง่ายๆที่ทำงานกับ Ubuntu แต่อาจแก้ไขปัญหาบน windows ได้เช่นกัน:

เพียงแค่โทร

pip install --upgrade pip

0

วิธีนี้แก้ไขปัญหาของฉันใน Ubuntu 18.04 เมื่อพยายามใช้ python3.6:

rm -rf ~/.local/lib/python3.6

คุณสามารถย้ายโฟลเดอร์ไปที่อื่นโดยใช้ mv แทนการลบด้วยสำหรับการทดสอบ:

mv ~/.local/lib/python3.6 ./python3.6_old

0

เปิด terminal linux ของคุณ

hash -d pip

สวัสดี Carlos ยินดีต้อนรับสู่ Stack Overflow เพื่อช่วยผู้ใช้รายอื่นที่ประสบปัญหานี้คุณสามารถเพิ่มคำตอบเพื่อชี้แจงว่าคำสั่งนี้ทำอะไรได้บ้างและแก้ไขปัญหาได้อย่างไร
CyberJacob

0

ในกรณีของเราในปี 2020 โดยใช้ Python3 ทางออกของปัญหานี้คือการย้ายการติดตั้ง Python ไปยังcloud-initสคริปต์เริ่มต้นซึ่งทำให้ VM เป็นอินสแตนซ์

เราพบข้อผิดพลาดเดียวกันนี้เมื่อเราพยายามติดตั้ง Python โดยใช้สคริปต์ที่ผู้ใช้เรียกในภายหลังในวงจรชีวิตของ VM แต่ย้ายรหัสการติดตั้ง Python เดียวกันไปยังcloud-initสคริปต์เพื่อกำจัดปัญหานี้

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