Per gli utenti della famiglia Ubuntu, Debian, Linux Mint
Grazie alla spiegazione di Anthony sopra , è possibile conservare il pip di sistema originale (in / usr / bin / e dist-pacchetti /) e rimuovere il pip installato manualmente (in ~ / .local /) per risolvere il conflitto:
$ python3 -m pip uninstall pip
Ubuntu / Debian pip v8.1.1 (16.04) dal python3-pip
pacchetto debian (vedi $ pip3 -V
) mostra gli stessi risultati di ricerca dell'ultimo pip v10.0.1 e installa gli ultimi moduli di PyPI bene. Ha un pip
comando funzionante (già nel $ PATH), oltre alla simpatica --user
opzione rattoppata di default dal 2016. Osservando le note di rilascio di pip , le versioni più recenti riguardano principalmente correzioni di bug specifiche del caso d'uso e alcune nuove funzionalità, quindi non tutti devono affrettarsi ad aggiornare pip ancora. E comunque il nuovo pip 10 può essere distribuito su virtualenvs Python.
Ma indipendentemente dai pips, il tuo sistema operativo consente di installare rapidamente moduli Python comuni (incluso numpy) con APT, senza la necessità di pip, ad esempio:
$ sudo apt install python3-numpy python3-scipy
(con dipendenze del sistema)
$ sudo apt install python3-pip
(pip con patch Debian, leggermente più vecchio ma non importa)
Promemoria sintassi apt rapido (vedere man apt
per i dettagli):
$ sudo apt update
(per risincronizzare i file dell'indice dei pacchetti Ubuntu da fonti aggiornate)
$ apt search <python-package-name>
(ricerca di testo completa su tutti i pacchetti disponibili)
$ apt show <python-package-name>
(visualizza la descrizione dettagliata del pacchetto)
$ sudo apt install <python-package-name>
I nomi dei pacchetti con il prefisso python-
sono per Python 2; e preceduto da python3-
sono per Python 3 (ad esempio python3-panda). Ce ne sono migliaia e sono sottoposti a test di integrazione all'interno di Debian e Ubuntu. A meno che non si cerchi di installare a livello di utente ( pip install --user
opzione) o in virtualenv / venv, apt potrebbe essere quello che cercavi. Questi pacchetti di sistema sono accessibili anche da envs virtuali, poiché virtualenv tornerà con grazia all'uso delle librerie di sistema durante l'importazione se i vostri envs non hanno fornito copie dei moduli. Anche --user
i moduli per utente installati (con pip ) personalizzati ~/.local/lib
verranno sovrascritti.
Nota, poiché si tratta di un'installazione a livello di sistema , raramente dovrai rimuoverli (devi essere consapevole delle dipendenze del sistema operativo). Questo è conveniente per i pacchetti con molte dipendenze di sistema (come con scipy o matplotlib), poiché APT terrà traccia e fornirà tutte le librerie di sistema richieste e le estensioni C, mentre con pip non hai tali garanzie .
In effetti, per i pacchetti Python a livello di sistema (al contrario di per utente, livello dir home o inferiore), Ubuntu prevede di utilizzare il gestore pacchetti APT (anziché sudo pip
) per evitare la rottura del sistema operativo: ha come sudo pip3
target la stessa /usr/lib/python3/dist-packages
directory in cui APT memorizza il sistema operativo moduli sensibili. Le recenti versioni di Debian / Ubuntu dipendono fortemente da Python 3, quindi i suoi moduli preinstallati sono gestiti apt
e non dovrebbero essere modificati.
Quindi, se usi il pip3 install
comando, assicurati che venga eseguito in un ambiente di sviluppo virtuale isolato, ad esempio con virtualenv ( sudo apt install python3-virtualenv
) o con Python3 incorporato ( -m venv
) o a livello di utente ( --user
opzione pip, impostazione predefinita in Ubuntu fornita pip dal 2016), ma non a livello di sistema (mai sudo pip3
!), poiché pip interferisce con il funzionamento del gestore pacchetti APT e può influire sui componenti del sistema operativo Ubuntu quando un modulo python utilizzato dal sistema viene inaspettatamente modificato. In bocca al lupo!
P. S. Tutto quanto sopra è per la soluzione 'ideale' (modo Debian / Ubuntu).
Se si desidera ancora utilizzare esclusivamente la nuova pip3 v10, sono disponibili 3 soluzioni rapide:
- apri semplicemente una nuova sessione bash (una nuova scheda terminale o tipo
bash
) e pip3 v10 diventa disponibile (vedi pip3 -V
). debian's pip3 v8 rimane installato ma è rotto; o
- il comando
$ hash -d pip3 && pip3 -V
per aggiornare il percorso pip3 nel $ PATH. debian's pip3 v8 rimane installato ma è rotto; o
- il comando
$ sudo apt remove python3-pip && hash -d pip3
per disinstallare completamente pipian v8 di debian, a favore del nuovo pip3 v10.
Nota: dovrai sempre aggiungere --user
flag a qualsiasi pip non fornito da Debian, a meno che tu non sia in virtualenv! (distribuisce i pacchetti python su ~/.local/
, impostazione predefinita in python3-pip e python-forniti da debian / ubuntu dal 2016). L'uso di pip 10 a livello di sistema, al di fuori di virtualenv, non è realmente supportato da Ubuntu / Debian. Mai sudo pip3
!
Ulteriori dettagli:
https://github.com/pypa/pip/issues/5221#issuecomment-382069604
https://github.com/pypa/pip/issues/5240#issuecomment-381673100