pip / python: les packages de site normaux ne sont pas accessibles en écriture


11

J'ai un nouveau Macbook - un utilisateur l'a installé, puis j'ai installé un nouvel utilisateur (le mien), accordé des privilèges d'administrateur et supprimé l'ancien. Je suis sur OS Catalina.

Depuis l'installation, j'ai eu plusieurs problèmes de permission. VSCode ne trouve pas Jupyter Notebook, pipinstalle les packages sur ~/Library/Python/3.7/site-packages.

Quand je le fais, which python3je reçois usr/bin/python3. Quand je le pip3 install <package>reçois: Defaulting to user installation because normal site-packages is not writeableEt puis il dit qu'il a déjà été installé, même si je ne peux pas y accéder quand je le fais import <package>.

Il semble clair que c'est un problème d'autorisation, pipne peut pas installer sur le python "de base", et ils pythonne peuvent pas trouver dans quoi j'ai installé ~/Library/Python/3.7/site-packages.

J'ai essayé de réinstaller le système d'exploitation, mais comme je n'ai pas effectué une nouvelle installation, cela n'a rien changé. Qu'est-ce que je rate? Comment puis-je corriger les autorisations? Où est-ce que je veux que les packages soient installés ( venvbien sûr, mais certains packages que je veux global (comme jupyter)).

Merci


J'ai aussi ce problème. Je me demande si cela a à voir avec la fin du support de Python 2.7
Chris Dutrow

J'ai le même problème
Mahyar Maleki

1
Êtes-vous sûr que vous utilisez le bon pip? Et si vous utilisez le plus sûr python -m pip install ....?
Tom de Geus

@TomdeGeus: Eh bien, python3 -m pip install ...dans ce cas, mais oui, lorsque plusieurs versions de Python sont impliquées, il est beaucoup plus sûr d'appeler pipvia l'approche "module d'exéc", donc vous savez que vous utilisez l'exécutable Python attendu.
ShadowRanger

Pour résoudre ce problème, j'ai fini par désinstaller python3 (précédemment installé avec brew) et utiliser pyenv pour installer python3. Maintenant, tout fonctionne. Suivi de ce guide: opensource.com/article/19/5/python-3-default-mac (passer à la dernière section)
Arseny Levin

Réponses:


2

Il est préférable de ne pas utiliser directement le Python fourni par le système. Laissez-le tranquille car le système d'exploitation peut le modifier de manière indésirable, comme vous l'avez vécu.

La meilleure pratique consiste à configurer vos propres versions de Python et à les gérer projet par projet à l'aide de virtualenv(pour Python 2) ouvenv (pour Python 3). Cela élimine toute dépendance à la version Python fournie par le système et isole également chaque projet des autres projets sur la machine.

Chaque projet peut avoir une version de point Python différente si nécessaire, et obtient son propre site_packagesrépertoire afin que les bibliothèques installées par pip puissent également avoir différentes versions par projet. Cette approche est un problème majeur.


0

Eu ce même problème sur une nouvelle installation de Debian 9.12. Le redémarrage de mon serveur a résolu le problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.