ImportError: không thể nhập tên chính khi chạy lệnh pip --version trong windows7 32 bit


145

Tôi đã cài đặt python (2.7.9) mới nhất đi kèm với pip và setuptools cho windows 32-bit. Tôi đã thử cài đặt lại pip nhưng vấn đề vẫn còn.

Đây là lỗi sau khi chạy pip --versiontrong Administrator 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
Nó có thể liên quan đến sự cho phép tập tin đã có một vấn đề với python 3.4 ở đây đã được giải quyết, nó đáng để kiểm tra.
Kobi K

Tôi đã giải quyết bằng cách sử dụng lệnh icacls nhưng lỗi vẫn còn.
Woootiness 30/1/2015

2
Câu trả lời "easy_install -U pip" cung cấp tại stackoverflow.com/questions/28041277/
Thẻ

Câu trả lời:


172

Mặc dù câu hỏi ban đầu có vẻ là từ năm 2015, nhưng 'lỗi' này dường như cũng ảnh hưởng đến người dùng cài đặt pip-10.0.0.

Cách giải quyết không phải là sửa đổi pip, tuy nhiên để thay đổi cách gọi pip. Thay vì gọi /usr/bin/pipcuộc gọi pipthông qua Python. Ví dụ, thay vì dưới đây:

pip install <package>

Nếu từ Python phiên bản 2 (hoặc nhị phân Python mặc định được gọi python) thì:

python -m pip install <package>

hoặc nếu từ Python phiên bản 3:

python3 -m pip install <package> 

vâng, tôi không nhớ những gì tôi đã làm để khắc phục điều này nhưng tôi vẫn để nó mở cho người khác.
Woootiness

Khi tôi sử dụng lệnh đã cho, tôi đã gặp lỗi về quyền (mà tôi cũng đã nhận được sau khi thay đổi pip theo câu trả lời của catalinpopescu). Tuy nhiên, để tải xuống các gói cho phạm vi người dùng (để bạn không cần quyền quản trị), hãy sử dụng: python3 -m pip install <pack> --user (hoạt động cho python3, cũng nên hoạt động cho python2 mặc dù chưa được thử nghiệm)
randmin

Giúp tôi trên máy Mac.
charles ross

Câu trả lời tốt hơn. Sửa đổi mã nguồn là một đầm lầy.
ozgur

Đây là một cách thực sự tốt để đi. Nó cũng giúp bạn thực sự dễ dàng đảm bảo rằng bạn đang sử dụng đúng phiên bản:python2 -m pip install $package
JamesTheAw đũaDude

257

Lỗi được tìm thấy trong pip 10.0.0.

Trong linux, bạn cần sửa đổi tệp: / usr / bin / pip từ:

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

đến đây:

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

1
Có vẻ như đây là giải pháp. Tôi đã thử điều này và không có vấn đề cho đến nay.
Khue

2
Tôi đang sử dụng pip 10.0.1 và lỗi vẫn còn đó. Bạn giải pháp giúp. Cảm ơn! Bạn đã báo cáo lỗi này và giải pháp lại cho các nhà phát triển chưa?
Alexey Subach

7
Mặc dù giải pháp này hoạt động, xin vui lòng không sửa đổi pipchính nó. pipThay vào đó, hãy xem một giải pháp sạch hơn để gọi từ Python.
Wan Bachtiar

1
Không giúp gì cho "pip 10.0.1". pip --version pip 10.0.1 from /home/x/.local/lib/python2.7/site-packages/pip (python 2.7) cách sử dụng: sudo pip install tensorflow đầu ra: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_do, không nên sửa đổi thủ công gói đã cài đặt cho phù hợp với môi trường vì lần sau bạn cập nhật lên phiên bản khác, tức là 10.0.3 bạn có thể gặp phải vấn đề tương tự. Cách giải quyết của việc chạy pipqua Python đã cài đặt sẽ trỏ pip để sử dụng môi trường phù hợp một cách chính xác.
Wan Bachtiar

60

Trên Ubuntu Server 16, tôi gặp vấn đề tương tự với python27. Thử cái này:

Thay đổi

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

Đến

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

1
Hoạt động trên Ubuntu 16.04
Sameera Kumarasingha

Đây không phải là ý tưởng tốt. Như được đề cập trong một câu trả lời khác của @RichardElkins: "Mọi người không nên lãng phí thời gian để chỉnh sửa các tệp đã cài đặt không có ý định sửa đổi sau khi cài đặt"
juergi

20

Trên Windows 10, tôi đã sử dụng các lệnh sau để hạ cấp pip:

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

Điều này cũng sẽ hoạt động trên Linux và Mac.


1
Nó phải là python -m pip cài đặt pip == 9.0.3
elelias

@elelias Ồ, tôi đã không nhận ra điều đó. cảm ơn vì đã nói với tôi
kiyah

1
Tôi đã phải python easy_install.py pip==9.0.3bởi vì sau dòng đầu tiên, pip không được tìm thấy.
Suzanne

3
Hoạt động trên Linux và Mac cũng vậy. Đó là một cách giải quyết cho đến khi pip / pip3 10 được cố định. Mọi người không nên lãng phí thời gian để chỉnh sửa các tệp đã cài đặt không có ý định sửa đổi sau khi cài đặt ..
Richard Elkins

Tôi đã có vấn đề về đường dẫn sau khi nâng cấp, tôi đã làm như sau để làm cho nó hoạt động. sudo python -m pip pip uninstall && sudo apt cài đặt python-pip --reinstall
webjockey

10

Tôi gặp vấn đề tương tự, nhưng gỡ cài đặt và cài đặt lại với apt và pip không hoạt động với tôi.

Tôi thấy một giải pháp khác trình bày một cách dễ dàng để khôi phục đường dẫn pip3:

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

1
Tôi đã trăn 2.7, vì vậy tôi đã phải thay đổi lệnh để phù hợp với python 2.7 sudo python -m pip pip uninstall && sudo apt cài đặt python-pip --reinstall
webjockey

hoạt động hoàn hảo trên Ubuntu nhưng tôi nghĩ nó sẽ không hoạt động trên windows
zaki benz

8

tôi đã khắc phục sự cố bằng cách cài đặt lại pip bằng cách sử dụng get-pip.py.

  1. Tải xuống get-pip từ liên kết chính thức: https://pip.pypa.io/en/urdy/installing/#upgrad-pip
  2. chạy nó bằng lệnh : python get-pip.py.

Và pip được cố định và hoạt động hoàn hảo.


1
Đổi python get-pip-pythành pythonget-pip.py
YourFriend

1
Làm việc hoàn hảo! Cảm ơn bạn.
Shambo

Làm việc cho tôi là tốt. Cảm ơn bạn
Abhishek Kishore

2

Trên MacOS nếu bạn đã cài đặt python qua Homebrew, hãy thay đổi dòng trong /usr/local/opt/python/libexec/bin/pip

từ

from pip.internal import main

đến

from pip._internal import main

Hoặc sử dụng một trong những lót này: sed -i '' "s/from pip import main/from pip._internal import main/" /usr/local/opt/python/libexec/bin/pip

Giải trình:

Vấn đề được gây ra bởi những thay đổi trong pip phiên bản 10 di chuyển không gian tên bên trong main._internalvà tập lệnh bin được đặt bởi homebrew vẫn nhìn nó từ vị trí cũ (nơi nó từng có trong phiên bản 9). Vấn đề và một số thảo luận https://github.com/pypa/pip/issues/5240


1

Nếu bạn có một liên kết cứng đến pip trong PATH(nghĩa là nếu bạn đã cài đặt nhiều phiên bản python) và sau đó bạn nâng cấp pip, bạn cũng có thể gặp phải lỗi này.

Giải pháp bao gồm tạo lại liên kết cứng. Hoặc thậm chí tốt hơn, ngừng sử dụng liên kết cứng và sử dụng liên kết mềm.


1
Làm thế nào để khắc phục điều này?
user_x

1

Trên Windows 10, tôi gặp vấn đề tương tự. PIP 19đã được cài đặt trong hệ thống của tôi nhưng không hiển thị. Lỗi là No Module Found.

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

Hạ cấp xuống pip9.0.3 làm việc tốt cho tôi.



0

Nó hoạt động trên Ubuntu 16.04. Bước 1:

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

một tập tin mở ra với nội dung:

#!/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())

Thay đổi mainthành __main__như nó xuất hiện dưới đây:

#!/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())

Lưu file và đóng nó lại. Và bạn đã hoàn thành!


0

thử cái này

#!/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

Một giải pháp đơn giản hoạt động với Ubuntu, nhưng cũng có thể khắc phục sự cố trên windows:

Chỉ cần gọi

pip install --upgrade pip

0

Điều này đã giải quyết vấn đề của tôi trong Ubuntu 18.04 khi thử sử dụng python3.6:

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

Bạn có thể di chuyển thư mục đến một nơi khác bằng mv thay vì xóa nó, để kiểm tra:

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

0

Mở thiết bị đầu cuối linux của bạn.

hash -d pip

Xin chào Carlos, chào mừng bạn đến với Stack Overflow. Để hỗ trợ những người dùng khác gặp phải vấn đề này, vui lòng bạn có thể thêm vào câu trả lời của mình để làm rõ lệnh này làm gì và cách khắc phục vấn đề này.
CyberJacob

0

Trong trường hợp của chúng tôi, vào năm 2020 bằng cách sử dụng Python3, giải pháp cho vấn đề này là chuyển cài đặt Python sang cloud-inittập lệnh khởi động, khởi tạo VM.

Chúng tôi đã gặp phải lỗi tương tự khi chúng tôi đã cố gắng cài đặt Python bằng các tập lệnh được người dùng gọi sau này trong vòng đời của VM, nhưng việc chuyển mã cài đặt Python tương tự sang cloud-inittập lệnh đã loại bỏ vấn đề này.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.