Lỗi sau khi nâng cấp pip: không thể nhập tên 'chính'


467

Bất cứ khi nào tôi đang cố gắng cài đặt bất kỳ gói nào bằng pip, tôi sẽ gặp lỗi nhập này:

guru@guru-notebook:~$ pip3 install numpy
Traceback (most recent call last):
  File "/usr/bin/pip3", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'


guru@guru-notebook:~$ cat `which pip3`
#!/usr/bin/python3
# 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.
from pip import main
if __name__ == '__main__':
    sys.exit(main())

Nó đã hoạt động tốt trước đó, tôi không chắc tại sao nó lại ném lỗi này. Tôi đã tìm kiếm về lỗi này, nhưng không thể tìm thấy bất cứ điều gì để khắc phục nó.

Xin vui lòng cho tôi biết nếu bạn cần thêm chi tiết, tôi sẽ cập nhật câu hỏi của tôi.


1
Thảo luận thêm tại liên kết này .
chéo

7
Tôi gặp vấn đề tương tự vì tôi đã từng pip install --upgrade pipnâng cấp pip trên máy chủ nơi tôi không có quyền quản trị viên. Gỡ cài đặt pip với python -m pip uninstall pipgiải quyết vấn đề của tôi.
Foad

Các câu trả lời đã không giúp tôi. Đây là vấn đề của tôi: github.com/pypa/pipenv/issues/2095
Étienne

Câu trả lời:


846

Bạn phải vô tình nâng cấp hệ thống của bạn (có thể thông qua một cái gì đó như sudo pip install pip --upgrade)

pip 10.x điều chỉnh vị trí bên trong của nó. Các pip3lệnh mà bạn đang nhìn thấy là một trong những cung cấp bởi nhà duy trì gói của bạn (có lẽ Debian dựa đây?) Chứ không phải là một tập tin bằng cách pip quản lý.

Bạn có thể đọc thêm về điều này trên trình theo dõi vấn đề của pip

Có thể bạn sẽ muốn không nâng cấp pip hệ thống của bạn và thay vào đó sử dụng một virtualenv.

Để khôi phục pip3nhị phân bạn sẽ cần sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Nếu bạn muốn tiếp tục trong "lãnh thổ không được hỗ trợ" (nâng cấp gói hệ thống bên ngoài trình quản lý gói hệ thống), bạn có thể có thể thoát khỏi python3 -m pip ...thay vì pip3.


28
sudo apt install python3-pip --reinstallkhông khắc phục được sự cố, tuy nhiên tôi có thể cài đặt gói bằng cách sử dụng python3 -m pip. Cảm ơn bạn đã giúp đỡ. Tôi đánh dấu nó là chấp nhận.
g_p

2
@g_p đã cập nhật các hướng "sửa lỗi" - chỉ cần xác minh chúng trong docker (Tôi nên làm điều đó lần đầu tiên!)
Anthony Sottile

6
Tôi cần sử dụng lệnh 'python -m pip gỡ cài đặt pip' vì 'sudo pip Gỡ cài đặt pip' đã đưa ra một lỗi tương tự như câu hỏi ban đầu
Mz A

41
Cảm ơn! Điều đó đã giúp! Sử dụng sudo python -m pip uninstall pip && sudo apt install python-pip --reinstallcho python2!
Barmaley

1
Hoạt động cho Ubuntu trên Windows. Giải pháp là những gì @Barmaley gợi ý cho python2 (trình thông dịch python mặc định).
19h55

111

Chúng tôi có thể xóa lỗi bằng cách sửa đổi tập tin pip.

Kiểm tra vị trí của tệp:

$ which pip

đường dẫn -> / usr / bin / pip

Đi đến vị trí đó ( / usr / bin / pip ) và thiết bị đầu cuối mở

Đi vào: $ sudo nano pip

Bạn có thể thấy:

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

Thay đổi thành:

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

sau đó ctrl + o viết các thay đổi và thoát

Hy vọng điều này sẽ làm !!


1
Thực hiện những thay đổi này không khắc phục được vấn đề, nhưng thay đổi nó trở lại văn bản gốc đã làm. _ (ツ) _ /
David

2
Tôi đã thử điều này, nhưng đã nhận đượcAttributeError: module 'pip.__main__' has no attribute 'main'
dnnagy

4
Hãy chắc chắn rằng bạn đã viết _main () không phải chính ()
vijay athithya

2
trong phiên bản mới nhất pip3, main()được chuyển đến pip._internal. Báo cáo nhập khẩu phải được thay đổi thànhfrom pip._internal import main
Yossarian42

2
Làm việc như người ở! Cảm ơn
mahesh nanayakkara

69

Dành cho gia đình Ubuntu, người dùng Debian, Linux Mint

Nhờ lời giải thích của Anthony ở trên , bạn có thể giữ lại pip hệ thống ban đầu của mình (trong / usr / bin / và dist-gói /) và xóa pip được cài đặt thủ công (trong ~ / .local /) để giải quyết xung đột:

$ python3 -m pip uninstall pip

Ubuntu / Debian pip v8.1.1 (16.04) từ python3-pipgói debian (xem $ pip3 -V) hiển thị kết quả tìm kiếm tương tự như pip v10.0.1 mới nhất và cài đặt các mô-đun mới nhất từ ​​PyPI. Nó có một piplệnh hoạt động (đã có trong $ PATH), cộng với --usertùy chọn đẹp được vá theo mặc định từ năm 2016. Nhìn vào ghi chú phát hành pip , các phiên bản mới hơn chủ yếu là về sửa lỗi cụ thể trong trường hợp sử dụng và một số tính năng mới nhất định, vì vậy không mọi người phải vội vàng nâng cấp pip. Và pip 10 mới có thể được triển khai lên Python virtualenvs.

Nhưng bất kể pips, hệ điều hành của bạn cho phép cài đặt nhanh các mô-đun Python phổ biến (bao gồm cả numpy) với APT, mà không cần pip, ví dụ:
$ sudo apt install python3-numpy python3-scipy(với phụ thuộc hệ thống)
$ sudo apt install python3-pip(pip-patched Debian, hơi cũ nhưng không thành vấn đề)

Nhắc nhở cú pháp apt nhanh (vui lòng xem man aptđể biết chi tiết):
$ sudo apt update(để đồng bộ lại các tệp chỉ mục gói Ubuntu từ các nguồn cập nhật)
$ apt search <python-package-name> (tìm kiếm toàn văn trên tất cả các gói có sẵn)
$ apt show <python-package-name>(hiển thị mô tả gói chi tiết)
$ sudo apt install <python-package-name>

Tên gói có tiền tố python-là dành cho Python 2; và tiền tố python3-là dành cho Python 3 (ví dụ python3-pandas). Có hàng ngàn và họ trải qua thử nghiệm tích hợp trong Debian và Ubuntu. Trừ khi bạn tìm cách cài đặt ở cấp độ mỗi người dùng ( pip install --usertùy chọn) hoặc trong virtualenv / venv, apt có thể là những gì bạn cần. Các gói hệ thống này cũng có thể truy cập được từ các env ảo, vì virtualenv sẽ quay trở lại sử dụng libs hệ thống khi nhập nếu env của bạn không có bản sao mô-đun. Các --usermô-đun cho mỗi người dùng được cài đặt tùy chỉnh (có pip ) của ~/.local/libbạn cũng sẽ ghi đè lên chúng.

Lưu ý, vì đây là bản cài đặt toàn hệ thống , bạn hiếm khi cần gỡ bỏ chúng (cần lưu ý về các phụ thuộc của hệ điều hành). Điều này thuận tiện cho các gói có nhiều phụ thuộc hệ thống (như với scipy hoặc matplotlib), vì APT sẽ theo dõi và cung cấp tất cả các lib hệ thống và phần mở rộng C cần thiết, trong khi với pip bạn không có đảm bảo như vậy .

Trên thực tế, đối với các gói Python toàn hệ thống (trái ngược với mỗi người dùng, mức thư mục gia đình hoặc thấp hơn), Ubuntu mong muốn sử dụng trình quản lý gói APT (chứ không phải sudo pip) để tránh phá vỡ HĐH: sudo pip3nhắm mục tiêu vào cùng /usr/lib/python3/dist-packagesthư mục nơi APT lưu trữ HĐH mô-đun nhạy cảm. Các bản phát hành Debian / Ubuntu gần đây phụ thuộc nhiều vào Python 3, do đó các mô-đun được cài đặt sẵn của nó được quản lý aptvà không nên thay đổi.

Vì vậy, nếu bạn sử dụng pip3 installlệnh, vui lòng đảm bảo rằng nó chạy trong môi trường dev ảo bị cô lập, chẳng hạn như với virtualenv ( sudo apt install python3-virtualenv) hoặc với Python3 tích hợp ( -m venv) hoặc ở cấp độ mỗi người dùng ( --usertùy chọn pip, mặc định trong Ubuntu cung cấp Pip kể từ năm 2016), nhưng không phải toàn hệ thống (không bao giờ sudo pip3!), vì pip cản trở hoạt động của trình quản lý gói APT và có thể ảnh hưởng đến các thành phần hệ điều hành Ubuntu khi mô-đun python sử dụng hệ thống bị thay đổi bất ngờ. Chúc may mắn!


P. S. Tất cả những điều trên là dành cho giải pháp 'lý tưởng' (cách Debian / Ubuntu).

Nếu bạn vẫn muốn sử dụng riêng pip3 v10 mới, có 3 cách giải quyết nhanh:

  • chỉ cần mở một phiên bash mới (tab thiết bị đầu cuối mới hoặc loại bash) - và pip3 v10 sẽ khả dụng (xem pip3 -V). Pip3 v8 của debian vẫn được cài đặt nhưng bị hỏng; hoặc là
  • lệnh $ hash -d pip3 && pip3 -V để làm mới tên đường dẫn pip3 trong $ PATH. Pip3 v8 của debian vẫn được cài đặt nhưng bị hỏng; hoặc là
  • lệnh $ sudo apt remove python3-pip && hash -d pip3gỡ cài đặt hoàn toàn pip3 v8 của debian, ủng hộ pip3 v10 mới của bạn.

Lưu ý: Bạn sẽ luôn cần thêm --usercờ vào bất kỳ pip nào không được cung cấp, trừ khi bạn ở trong virtualenv! (nó triển khai các gói python ~/.local/, mặc định trong python3-pip và python-pip do debian cung cấp từ năm 2016). Việc bạn sử dụng pip 10 trên toàn hệ thống, bên ngoài virtualenv, không thực sự được Ubuntu / Debian hỗ trợ. Không bao giờ sudo pip3!

Chi tiết khác:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100


Bạn có thể giúp tôi hiểu tại sao cài đặt phiên bản nâng cấp pip cục bộ với --user, tức là không sudo, ảnh hưởng đến khả năng chạy apt được cài đặt của tôi pipkhông? Tôi nghĩ hai người sẽ cùng tồn tại. Nhưng như ý chính này cho thấy apt đã cài đặt một lần ngắt sau khi tôi làm python3 -m pip install --user --upgrade pip. Tôi không tìm kiếm một giải pháp - Tôi thực sự tò mò muốn hiểu những gì đang xảy ra ở đây.
George Hawkins

1
@George Nó xảy ra do sự không phù hợp giữa các thư viện pip và các trình bao bọc của nó nhập chúng. Cố gắng chạy lệnh pip hệ thống ngay lập tức (không áp dụng bất kỳ giải pháp nào ) vẫn sẽ gọi phiên bản hệ thống được cài đặt apt của tập lệnh bao bọc pip /usr/bin/pip3thay vì cài đặt như --user( ~/.local/bin/pip*) theo hệ điều hành $ PATH vẫn được đặt để chạy phiên bản hệ thống của trình bao bọc, nhưng không phải thư viện của nó ..
Alex C.

2
@George Điều này là do giờ đây đã có gói pip mới hơn được cài đặt ~/.local/lib/python3.?/site-packages/pipưu tiên so với hệ thống apt trong việc nhập Python tương đối (trang web người dùng cục bộ ưu tiên hơn các lib toàn cầu). Và bởi vì trình bao bọc cũ hơn cố gắng from pip import mainthay vì from pip._internalhoặc __main__lớp của nó đối với phiên bản mới hơn của gói pip, nên lệnh pip từ ý chính không thành công ImportError: cannot import name 'main'. Vì vậy, cả hai pips có thể cùng tồn tại (trên đĩa) nhưng chức năng của hệ thống ban đầu sẽ bị "hỏng" ..
Alex C.

+1 cho --user. pip install --userlà những gì đã làm cho tôi. (Tôi có python 2.7, python 3.6 và python 3.7, tất cả được cài đặt trên Ubuntu 18.04 LTS.)
Stephen G Tuggy

46

giải quyết trong một bước duy nhất.

Tôi cũng đã đối mặt với vấn đề này, nhưng điều này có thể được giải quyết chỉ bằng 1 lệnh mà không bận tâm và lãng phí thời gian và tôi đã thử nó trên nhiều hệ thống, đây là giải pháp sạch nhất cho vấn đề này. Và đó là:

Đối với python3: - sudo python3 -m pip uninstall pip && sudo apt install python3-pip --reinstall.

Bằng cách này, bạn có thể chỉ cần cài đặt các gói bằng cách sử dụng pip3. để kiểm tra sử dụng pip3 --version.

Đối với các phiên bản cũ hơn, sử dụng : sudo python -m pip uninstall pip && sudo apt install python-pip --reinstall.

Bằng cách này, bây giờ bạn có thể chỉ cần cài đặt các gói bằng cách sử dụng pip. để kiểm tra sử dụng pip --version.


31

Sử dụng python -m pip installthay vìpip install

Thí dụ:

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

Việc thực thi pip(resp. pip3) Được cung cấp bởi distro của bạn ( python-pipgói trên Ubuntu 16.04) và được đặt tại /usr/bin/pip.

Do đó, nó không được cập nhật với pipchính gói khi bạn nâng cấp pip và có thể bị hỏng.

Nếu bạn chỉ sử dụng python -m piptrực tiếp, ví dụ như trong:

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

nó đi qua đường dẫn Python của bạn, tìm phiên bản mới nhất của pip và thực thi tệp đó.

Nó dựa vào thực tế là tập tin có thể thực thi được import, nhưng đó là một loại giao diện rất chuẩn, và do đó ít có khả năng phá vỡ hơn tập lệnh Debian hack.

Sau đó, tôi khuyên bạn nên thêm các bí danh sau vào .bashrc:

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

Tệp Ubuntu 18.04 /usr/bin/pip3có:

from pip import main

và có lẽ mainđã bị loại bỏ piptại một số điểm đó là những gì đã phá vỡ mọi thứ.

Cam kết phá vỡ pip dường như là: 95bcf8c5f6394298035a7332c441868f3b0169f4 "Di chuyển tất cả các API nội bộ sang pip._iternal" đã đi vào pip 18.0.

Đã thử nghiệm trong Ubuntu 16.04 sau khi cập nhật từ pip39.0.1 đến 18.0.

pyenv

Tuy nhiên, cuối cùng, để phát triển Python nghiêm túc, tôi chỉ khuyên bạn nên cài đặt Python cục bộ của riêng bạn với pyenv + virtualenv, điều này cũng sẽ khắc phục được lỗi Ubuntu này: https://askubfox.com/questions/682869/how-do-i- install-a-differ-python-version-using-apt-get / 1195153 # 1195153


3
Sau 5 giờ tìm kiếm, điều này làm việc cho tôi. tôi có thể giao hoa cho bạn nếu bạn gửi cho tôi địa chỉ của bạn. cảm ơn bạn.
cagri

18

Bạn có thể giải quyết vấn đề này bằng cách cài đặt lại pip.

Sử dụng một trong các lệnh dòng lệnh sau để cài đặt lại pip:

Python2:

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

Python3:

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

16

Kiểm tra xem pip đã được lưu vào bộ nhớ cache trên một đường dẫn khác chưa, để làm như vậy, hãy gọi $ which pip và kiểm tra xem đường dẫn đó có khác với đường dẫn được nhắc trong lỗi không, nếu đó là trường hợp chạy:

$ hash -r

Khi bộ nhớ cache rõ ràng, pip sẽ hoạt động trở lại. tham khảo: http://cheng.logdown.com/posts/2015/06/14/-usr-bin-pip-no-such-file-or-directory


8

Tôi đang chạy trên một hệ thống mà tôi có sudo apt nhưng không có sudo pip. (Và không có quyền truy cập su.) Tôi đã rơi vào tình huống tương tự bằng cách làm theo lời khuyên từ pip:

Bạn đang sử dụng pip phiên bản 8.1.1, tuy nhiên 18.0 có sẵn. Bạn nên xem xét nâng cấp thông qua lệnh 'cài đặt pip - nâng cấp pip'.

Không có bản sửa lỗi nào khác phù hợp với tôi, vì tôi không có đủ đặc quyền quản trị viên. Tuy nhiên, một vài điều bị mắc kẹt với tôi khi đọc lên điều này:

  • Tôi không nên làm điều này. Chắc chắn, pip nói với tôi. Nó nói dối.
  • Sử dụng --user giải quyết rất nhiều vấn đề bằng cách tập trung vào thư mục chỉ người dùng.

Vì vậy, tôi thấy dòng lệnh này hoạt động để đưa tôi trở lại nơi tôi đang ở. Nếu bạn đang sử dụng một phiên bản khác với 8.1.1, rõ ràng bạn sẽ muốn thay đổi phần đó của dòng.

python -m pip install --force-reinstall pip==8.1.1 --user

Đó là điều duy nhất làm việc cho tôi, nhưng nó hoạt động hoàn hảo!


7

Khôi phục với python3 -m pip install --user pip==9.0.1(hoặc phiên bản đã hoạt động)


5

Điều tương tự cũng xảy ra với tôi trên Pixelbook khi sử dụng LXC (strech) mới. Giải pháp này rất giống với giải pháp được chấp nhận, với một sự khác biệt tinh tế, đó là pip3 cố định cho tôi.

sudo python3 -m pip install --upgrade pip

Điều đó đã phá vỡ phiên bản, và bây giờ nó hoạt động như mong đợi.

Tôi đã tìm thấy nó ở đây ... Python.org: Đảm bảo pip được cập nhật


4

Tôi đã gặp vấn đề tương tự trên hệ thống Ubuntu 16.04 của mình. Tôi quản lý để sửa nó bằng cách cài đặt lại pip bằng lệnh sau:

curl https://bootstrap.pypa.io/get-pip.py | sudo python3


Nó có lợi ích khi bạn cài đặt nó từ nguồn và không có cái nào ở trên hoạt động trên Debian 9 trống rỗng (từ nhà cung cấp máy chủ chuyên dụng của tôi)
Peter Rosemann

cuộn tròn internet để siêu người dùng, những gì có thể đi sai!
Sum1sAdmin

3

Các lệnh trên không có tác dụng với tôi nhưng chúng rất hữu ích:

sudo apt purge python3-pip
sudo rm -rf '/usr/lib/python3/dist-packages/pip'  
sudo apt install python3-pip
cd
cd .local/lib/python3/site-packages
sudo rm -rf pip*  
cd
cd .local/lib/python3.5/site-packages
sudo rm -rf pip*  
sudo pip3 install jupyter

2

Trong ubfox 18.04.1 Bionic Beaver, bạn cần đăng xuất và đăng nhập lại (không cần khởi động lại) để có được môi trường thích hợp.

$ sudo apt install python-pip

$ pip --version
pip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip install --upgrade pip

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

$ exit
<login>

$ pip --version
pip 18.1 from /home/test/.local/lib/python2.7/site-packages/pip (python 2.7)

1

Tôi sử dụng sudo apt remove python3-pip sau đó piplàm việc.

 ~ sudo pip install pip --upgrade
[sudo] password for sen: 
Traceback (most recent call last):
  File "/usr/bin/pip", line 9, in <module>
    from pip import main
ImportError: cannot import name 'main'
  ~ sudo apt remove python3-pip   
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  libexpat1-dev libpython3-dev libpython3.5-dev python-pip-whl python3-dev python3-wheel
  python3.5-dev
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  python3-pip
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 569 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 215769 files and directories currently installed.)
Removing python3-pip (8.1.1-2ubuntu0.4) ...
Processing triggers for man-db (2.7.5-1) ...
  ~ pip

Usage:   
  pip <command> [options]

1
Đó là vì pipPython 2. OP sử dụng pip3, phiên bản Python 3 pipmà bạn vừa gỡ bỏ. Hai cái này là khác biệt và không thể thay thế cho nhau.
Neinstein

1

Đối với giải pháp Python phiên bản 2.7 @Anthony hoạt động hoàn hảo, bằng cách thay đổi python3 thành python như sau:

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

1

Điều làm việc cho tôi để sửa lỗi khi sử dụng pip3là:

sudo cp -v /usr/local/bin/pip3 /usr/bin/pip3

Làm tất cả mọi việc:

 demon@UbuntuHP:~$ pip -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

 demon@UbuntuHP:~$ pip2 -V
 pip 10.0.1 from /home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)

 demon@UbuntuHP:~$ pip3 -V
 pip 10.0.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)

Có lẽ phiên bản 10.0.1 mới của pip không cập nhật nhị phân trong / usr / bin? (có vẻ như không)

EDIT: vấn đề tương tự xảy ra trong Ubuntu 18.04. Giải pháp tốt nhất tôi tìm thấy là liên kết các nhị phân pip từ /home/<user/.local/binđến /usr/local/binhoặc /usr/bin(tùy theo sở thích của bạn), như sau:

ln -sv /home/<user>/.local/bin/pip /usr/local/bin/pip
ln -sv /home/<user>/.local/bin/pip2 /usr/local/bin/pip2
ln -sv /home/<user>/.local/bin/pip2.7 /usr/local/bin/pip2.7
ln -sv /home/<user>/.local/bin/pip3 /usr/local/bin/pip3
ln -sv /home/<user>/.local/bin/pip3.6 /usr/local/bin/pip3.6

LƯU Ý: thay thế <user> bằng người dùng đang chạy hiện tại của bạn

Các phiên bản liên quan (mới nhất) có trong:

Phiên bản 3.6:

/home/demon/.local/lib/python3.6/site-packages/pip (python 3.6)

Phiên bản 2.7:

/home/demon/.local/lib/python2.7/site-packages/pip (python 2.7)


Điều này đã khắc phục vấn đề của tôi. Các câu trả lời khác thì không.
Amin Husni

1
Bạn thực sự không nên gây rối trực tiếp với các tập tin /usr/binmặc dù. Và, bạn đã PATHsai nếu /usr/local/binkhông phải trước đây /usr/bin.
tripleee

Các nhị phân pip không tồn tại trong /usr/local/bin. Nó chỉ trong /home/<user>/.local/binvà / hoặc /home/<user>/.local/lib/python<version>/site-packages/piptrong các phiên bản mới (v10.0 + không cập nhật tệp nhị phân trong /usr/bin). Do đó, lý do một bản sao hoặc liên kết tượng trưng của nhị phân cần được tạo trong /usr/binhoặc /usr/local/bin(tùy theo sở thích của người dùng) để pip có thể được chạy trên toàn cầu từ dòng lệnh.
cryptoboy

Các nhị phân pip thư mục tồn tại và nên được liên kết / sao chép từ: devil @ Bionic18: ~ / .local / bin $ ls pip pip2 pip2.7 pip3 pip3.6 Mặc pipđịnh nhị phân cho phiên bản mới nhất được cài đặt trên hệ thống
cryptoboy


0

Tôi đã có lỗi tương tự, nhưng python -m pipvẫn hoạt động, vì vậy tôi đã sửa nó bằng tùy chọn hạt nhân sudo python -m pip install --upgrade pip. Nó đã làm điều đó cho tôi.


0

Đối với những gì nó có giá trị, tôi đã có vấn đề với pip(không pip2hoặc pip3):

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

$ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 -V
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

Bằng cách nào đó (tôi không thể nhớ làm thế nào) Tôi đã cài đặt công cụ python trong ~/.localthư mục của mình . Sau khi tôi xóa thư mục pip từ đó, pipbắt đầu làm việc lại.

$ rm -rf /home/precor/.local/lib/python2.7/site-packages/pip
$ pip -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)


0

Bạn có thể thử điều này:

sudo ln -sf $( type -P pip ) /usr/bin/pip

3
Mặc dù mã này có thể trả lời câu hỏi, nhưng sẽ tốt hơn nếu bao gồm một số bối cảnh, giải thích cách thức hoạt động và khi nào sử dụng nó. Câu trả lời chỉ có mã là không hữu ích trong thời gian dài.
Giulio Caccin

0

Tôi cũng gặp vấn đề này khi tôi muốn nâng cấp hệ thống pip pip3 từ 9.0.1 lên 19.2.3.

Sau khi chạy pip3 install --upgrade pip, pipphiên bản trở thành 19.2.3. Nhưng main()đã được chuyển trong pip._internalphiên bản mới nhất, để lạipip3 bị hỏng.

Vì vậy, trong tập tin /usr/bin/pip3, thay thế line 9: from pip import mainvới from pip._internal import main. Vấn đề sẽ được khắc phục, hoạt động tương tự chopython2-pip . (Đã thử nghiệm trên bản phân phối Ubuntu 18.04)

Theo câu trả lời của @Vincent H.



0

bạn chỉ có thể sửa đường dẫn pip và pip3 bằng cách sử dụng update-alternatives

Điều đầu tiên bạn nên kiểm tra là $PATH hoạt động hiện tại của bạn echo $PATHvà xem bạn có thể tìm thấy /usr/local/binnơi mà pip3 và pip thường ở

Có một sự thay đổi mà hệ thống của bạn đang tìm kiếm ở đây /bin/pip/bin/pip3 vì vậy tôi sẽ nói hãy sửa lỗi bằng cách thêm vào~/.bash_profile tệp để nó tồn tại

export PATH=$PATH:/usr/local/bin và sau đó kiểm tra là cố định với which pipwhich pip3

Nếu không thì sử dụng update-alternativesđể sửa nó cuối cùng

update-alternatives --install /bin/pip3 pip3 /usr/local/bin/pip3 30

và nếu bạn muốn trỏ pip đến pip3 thì

update-alternatives --install /bin/pip pip /usr/local/bin/pip3 30

0

Điều này làm việc cho tôi!

hash -r pip # or hash -d pip

Bây giờ, gỡ cài đặt phiên bản cài đặt pip và cài đặt lại bằng các lệnh sau.

python -m pip uninstall pip  # sudo
sudo apt install --reinstall python-pip

Nếu pip bị hỏng, sử dụng:

python -m pip install --force-reinstall pip

Hy vọng nó giúp!


-1

nhập chính từ pip._iternal

from pip._internal import main

Chỉnh sửa mã pip từ

sudo nano /usr/bin/pip3

Bạn có thể chỉnh sửa câu trả lời và chỉ định nó tốt hơn? Không rõ lắm về cách chỉnh sửa tập tin /usr/bin/pip3...
M. Volf

-1

Như @cryptoboy đã nói - hãy kiểm tra phiên bản pip / python nào bạn đã cài đặt

 demon@UbuntuHP:~$ pip -V
 demon@UbuntuHP:~$ pip2 -V
 demon@UbuntuHP:~$ pip3 -V

và sau đó kiểm tra các thư viện không cần thiết trong thư mục .local / lib / của bạn.

Tôi đã sao lưu các cài đặt khi tôi đang di chuyển sang Kubfox mới hơn và trong thư mục .local / lib / python2.7 / trong thư mục nhà của tôi. Đã cài đặt python 3.6. Tôi vừa xóa thư mục cũ và bây giờ mọi thứ hoạt động rất tốt!


-1

Trên Debian bạn sẽ cần cập nhật apt trước ....

sudo apt-get update -qq
sudo apt-get install python-pip -qq
sudo pip install pip --upgrade --quiet
sudo pip2 install virtualenv --quiet

Nếu bạn bỏ qua 'sudo apt-get update -qq', pip của bạn sẽ bị hỏng và hiển thị lỗi 'không thể tìm thấy chính'.


-1

Lỗi này có thể là một sự cho phép. Vì vậy, kiểm tra thực thi lệnh với cờ -H :

sudo -H pip3 install numpy

câu hỏi nói rất rõ rằng ImportError không phải là lỗi cấp phép
Anthony Sottile

-1

Sử dụng lệnh sau trước khi thực hiện bất kỳ lệnh pip nào

hash -d pip

Nó sẽ làm việc


1
Có lẽ bạn có thể làm rõ làm thế nào nó sẽ giúp / + loại bỏ bất kỳ bình luận hạ thấp?
Yêu tinh
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.