Je pense que j'ai quelques problèmes avec Python et/ou pip sur mon Mac. J'ai Python 2.7 installé dans le monde entier, puis je configure normalement virtualenvs et Python3. .6.4 mais au cours des derniers jours, j’ai eu des problèmes avec des paquets tels que Fabric et SSH2 où je n’ai pas été en mesure de les installer avec diverses erreurs ou avec Fabric qu’il lançait lorsque j’essayais d’importer le paquet.
J'essaie maintenant de supprimer Fabric et d'installer Fabric3 et ses erreurs de projection comme ceci:
Could not install packages due to an EnvironmentError: [Errno 13] Permission denied: '/Users/david/Documents/projects/uptimeapp/env/lib/python3.6/site-packages/Fabric3-1.14.post1.dist-info'
Consider using the `--user` option or check the permissions.
(env) Davids-MacBook-Air:uptimeapp david$ pip install fabric3 --user
Can not perform a '--user' install. User site-packages are not visible in this virtualenv.
Si je fais Sudo pip install fabric
_ alors il installe mais avec cet avertissement:
The directory '/Users/david/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with Sudo, you may want Sudo's -H flag.
The directory '/Users/david/Library/Caches/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with Sudo, you may want Sudo's -H flag.
Mais je pensais qu'il n'était pas conseillé d'installer pip avec sudo?
Ce sont les erreurs que je reçois quand j'essaie de pip install ssh2-python
ssh2/agent.c:569:10: fatal error: 'libssh2.h' file not found
#include "libssh2.h"
^~~~~~~~~~~
1 error generated.
error: command 'clang' failed with exit status 1
----------------------------------------
Command "/Users/david/Documents/projects/uptimeapp/env/bin/python3.6 -u -c "import setuptools, tokenize;__file__='/private/var/folders/bl/97vt48j97zd2sj05zmt4xst00000gn/T /pip-install-mpyq41q4/ssh2-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /private/var/folders/bl/97vt48j97zd2sj05zmt4xst00000gn/T/pip-record-qul_k3kq/install-record.txt --single-version-externally-managed --compile - -install-headers /Users/david/Documents/projects/uptimeapp/env/bin/../include/site/python3.6 /ssh2-python" failed with error code 1 in /private/var/folders/bl/97vt48j97zd2sj05zmt4xst00000gn/T/pip-install-mpyq41q4/ssh2-python/
J'ai réussi à supprimer Fabric et à installer Fabric3 avec la commande Sudo, mais je préférerais ne pas le faire.
J'ajouterai que je n'ai rencontré aucun autre problème lors de l'installation d'autres packages, soit globalement dans Python2.7, soit dans les envs.
Le permission denied
Une erreur est générée parce que vous avez déjà masqué votre environnement virtuel en installant avec Sudo
. Courir
$ Sudo chown -R david:staff /Users/david/Documents/projects/uptimeapp/env
pour réparer les autorisations. Peut-être qu'il est même sage de corriger les autorisations pour le répertoire entier, si vous rencontrez d'autres problèmes d'autorisation:
$ Sudo chown -R david:staff /Users/david/
Maintenant, réinstaller les paquets devrait fonctionner à nouveau:
$ source /Users/david/Documents/projects/uptimeapp/env/bin/activate
$ (env) pip uninstall -y fabric
$ (env) pip install fabric
'libssh2.h' file not found
signifie qu'avant d'installer ssh-python
, vous devez d'abord installer la bibliothèque correspondante:
$ brew install libssh2
Vous pouvez faire pip pour installer le paquet à l’emplacement de la bibliothèque virtualenv:
Sudo -H venv/bin/pip install fabric