pip / python: i normali pacchetti del sito non sono scrivibili


11

Ho un nuovo Macbook: è stato installato da un utente, quindi ho installato un nuovo utente (il mio), concesso i privilegi di amministratore ed eliminato quello vecchio. Sono su OS Catalina.

Dall'installazione ho avuto diversi problemi di autorizzazione. VSCode non riesce a trovare Jupyter Notebook, pipinstalla i pacchetti su ~/Library/Python/3.7/site-packages.

Quando which python3lo capisco usr/bin/python3. Quando lo faccio pip3 install <package>ottengo: Defaulting to user installation because normal site-packages is not writeableE poi dice che è già stato installato, anche se non riesco ad accedervi quando lo faccio import <package>.

Sembra chiaro che si tratta di un problema di autorizzazione, pipimpossibile installarlo sul pitone "base" e che pythonnon riescono a trovare quello in cui ho installato ~/Library/Python/3.7/site-packages.

Ho provato a reinstallare il sistema operativo, ma poiché non ho eseguito un'installazione pulita, non ha cambiato nulla. Cosa mi sto perdendo? Come posso correggere esattamente le autorizzazioni? Dove voglio installare i pacchetti ( venvcerto, ma alcuni pacchetti voglio globale (come jupyter).

Grazie


Sto riscontrando anche questo problema. Mi chiedo se abbia a che fare con la fine del supporto di Python 2.7
Chris Dutrow

Sto avendo lo stesso problema
Mahyar Maleki il

1
Sei sicuro di utilizzare il corretto pip? E se usi molto più sicuro python -m pip install ....?
Tom de Geus,

@TomdeGeus: Bene, python3 -m pip install ...in questo caso, ma sì, quando ci sono più versioni di Python coinvolte, è molto più sicuro invocare piptramite l'approccio "exec module", quindi sai che stai usando l'eseguibile Python previsto.
ShadowRanger

Per risolvere questo problema ho finito per disinstallare python3 (precedentemente installato con brew) e usando pyenv per installare python3. Ora funziona tutto. Seguito questa guida: opensource.com/article/19/5/python-3-default-mac (salta all'ultima sezione)
Arseny Levin

Risposte:


2

È meglio non utilizzare direttamente Python fornito dal sistema. Lasciare quello da solo poiché il sistema operativo può cambiarlo in modi indesiderati, come hai sperimentato.

La migliore pratica è configurare le proprie versioni di Python e gestirle in base al progetto utilizzando virtualenv(per Python 2) o venv(per Python 3). Ciò elimina tutta la dipendenza dalla versione Python fornita dal sistema e isola anche ogni progetto da altri progetti sulla macchina.

Ogni progetto può avere una versione del punto Python diversa, se necessario, e ottiene la propria site_packagesdirectory in modo che anche le librerie installate da pip possano avere versioni diverse per progetto. Questo approccio è un grande evitatore di problemi.


0

Ha avuto lo stesso problema con una nuova installazione di Debian 9.12. Il riavvio del mio server ha risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.