J'essaie de déployer un package Python pip
dans un environnement virtuel sur une machine Ubuntu, mais je rencontre un problème lié aux autorisations. Par exemple:
(TestVirtualEnv)test@testServer:~$ pip install markdown2
se termine par:
erreur: impossible de créer «/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py»: autorisation refusée
Je ne peux pas sudo
, car il installera le package globalement, et non dans l'environnement virtuel. I chown
ed site-packages
; ls
montre uniquement les répertoires liés à easy_install
, pip
et setuptools
, et rien liés à Markdown.
Comment déployer un package dans un environnement virtuel pip
sans rencontrer d'erreurs liées aux autorisations?
python
virtualenv
pip
Arseni Mourzenko
la source
la source
sudo
?sudo
.sudo
. En effet, le package s'installe correctement maintenant. S'il vous plaît, pouvez-vous promouvoir votre commentaire en réponse afin que je puisse l'accepter?virtualenv
, car vous pouvez l'activervirtualenv
avec un autre utilisateur, mais cela ne vous permettra pas d'installer de packages et vous donnera un accès autorisé.Réponses:
virtualenv
les problèmes d'autorisation peuvent se produire lorsque vous créez levirtualenv
commesudo
et puis faire fonctionner sanssudo
lavirtualenv
.Comme découvert dans le commentaire de votre question, la solution ici est de créer le
virtualenv
sanssudo
pour pouvoir y travailler (surtout écrire) sanssudo
.la source
virtualenv
sans sudo?sudo
, voir la réponse de @vingtoft pour savoir comment le réparer facilement sans recréerSolution:
Si vous avez créé virtualenv en tant que root, exécutez la commande suivante:
Cela résoudra probablement votre problème.
À votre santé
la source
Dans mon cas, j'utilisais
mkvirtualenv
, mais je ne lui ai pas dit que j'allais utiliser python3. J'ai eu cette erreur:Cela a fonctionné après avoir spécifié python3:
la source
Je n'ai pas créé mon virtualenv en utilisant sudo. La réponse de Sebastian ne s'appliquait donc pas à moi. Mon projet s'appelle
utils
. J'ai vérifié leutils
répertoire et j'ai vu ceci:Comme vous pouvez le voir,
utils.egg-info
est la propriété deroot
ne pasmacuser
. C'est pourquoi cela me donnait unepermission denied
erreur. J'ai également dû supprimer/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link
car il a été créé parroot
. Je l'ai fait àpip install -e .
nouveau après les avoir supprimés, et cela a fonctionné.la source
Si vous avez créé un environnement virtuel en utilisant root, utilisez cette commande
il vous donnera l'accès root, puis activera votre environnement virtuel en utilisant ce
la source
Vous n'avez pas activé l'environnement virtuel avant d'utiliser pip.
Essayez-le avec:
Et puis utilisez pip -r requirements.txt sur votre dossier principal
la source
Cela s'est aussi produit (par accident) après avoir créé un nouveau venv dans un environnement virtuel existant. un moyen simple de diagnostiquer cela serait de voir où le
python
est lié symboliquement, c'est-à-dire exécuter:et assurez-vous qu'il pointe vers le binaire Python approprié. Pour la plupart des systèmes, ce sera
/usr/bin/python
ou/usr/bin/python3
. tandis que s'il pointe vers un environnement virtuel existant, ce sera quelque chose comme/home/youruser/somedir/bin/python
. si c'est le dernier, je suggérerais de recréer le venv tout en vous assurant que vous n'êtes pas "à l'intérieur" d'un virtualenv existant (c'est-à-dire exécuterdeactivate
)la source
Lors de la création de virtualenv, si vous utilisez sudo, le répertoire est créé avec les privilèges root.Ainsi, lorsque vous essayez d'installer un package avec un utilisateur non sudo, vous ne serez pas autorisé à y installer. Alors créez toujours virtualenv sans sudo et installez sans sudo.
Vous pouvez également copier des packages installés sur python global vers virtualenv.
la source