Sử dụng python -m pip install
thay vìpip install
Thí dụ:
python -m pip install --user somepackage
python3 -m pip install --user somepackage
Tôi bắt đầu gặp vấn đề này sau khi pip
nâng cấp:
pip install --upgrade --user pip
Việc thực thi pip
(resp. pip3
) Được cung cấp bởi distro của bạn ( python-pip
gói trên Ubuntu 16.04).
Do đó, nó không được cập nhật với pip
chí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 pip
trự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 và 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, nhưng đó là một loại giao diện rất chuẩn, và do đó ít có khả năng bị phá vỡ hơn so với 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/pip3
có:
from pip import main
và có lẽ main
đã bị loại bỏ pip
tạ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ừ pip3
9.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 lỗi Ubuntu này: Làm cách nào để tôi cài đặt phiên bản Python khác bằng apt-get?