Sử dụng python -m pip installthay 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 pipnâ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-pipgói trên Ubuntu 16.04).
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 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/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 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?