7 votes

pip install dans virtualenv depuis github en utilisant l'option -e ne parvient pas à ajouter le paquet au chemin python

J'essaie d'installer un paquet de mon github en mode "éditable" (-e) pour pouvoir travailler facilement sur le dépôt tout en l'utilisant.

Cependant, il pose des problèmes car il n'est pas disponible dans le chemin de python après son installation.

Avec un virtualenv "publisher" propre et frais créé et activé, j'exécute ce qui suit :

pip install -e git+https://github.com/roberts81/easy-thumbnails.git#egg=easy_thumbnails
Obtaining easy-thumbnails from git+https://github.com/roberts81/easy-thumbnails.git#egg=easy_thumbnails
  Cloning https://github.com/roberts81/easy-thumbnails.git to /Users/ben/Envs/publisher/src/easy-thumbnails
  Running setup.py egg_info for package easy-thumbnails

    no previously-included directories found matching 'docs/_build'
Installing collected packages: easy-thumbnails
  Running setup.py develop for easy-thumbnails

    no previously-included directories found matching 'docs/_build'
    Creating /Users/ben/Envs/publisher/lib/python2.7/site-packages/easy-thumbnails.egg-link (link to .)
    Adding easy-thumbnails 1.2 to easy-install.pth file

    Installed /Users/ben/Envs/publisher/src/easy-thumbnails
Successfully installed easy-thumbnails
Cleaning up...

Ensuite, si je lance python (toujours dans mon virtualenv) et que j'essaie d'importer quoi que ce soit de ce paquet, cela échoue.

Python 2.7.2 (default, Jun 20 2012, 16:23:33) 
[GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import easy_thumbnails
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named easy_thumbnails
>>> 

Si je l'installe sans l'option -e, tout fonctionne à merveille. J'obtiens le même effet (c'est-à-dire qu'ils ne sont pas sur le chemin de python après l'installation) avec d'autres dépôts, par ex. pip install -e git+http://github.com/django/django.git@stable/1.5.x#egg=django . Alors, que se passe-t-il ?

Une chose que je remarque est qu'il ne semble pas mettre à jour le fichier easy-install.pth même s'il dit qu'il le fait... quelque chose de bizarre se passe ici.

Mais si je l'exécute (la commande pip install...) avec sudo, cela fonctionne ! Je peux également installer le paquet globalement (en dehors du virtualenv, avec sudo bien sûr) et cela fonctionne.

Versions :

pip==1.2.1 virtualenv==1.8.4 virtualenvwrapper==3.6 python==2.7.2 Mac OSX 10.8.2

2voto

jterrace Points 21939

Cela fonctionne pour moi avec pip 1.2.1 et virtualenv 1.8.4 :

$ virtualenv -p python2.7 venv
Running virtualenv with interpreter /usr/local/bin/python2.7
New python executable in venv/bin/python
Installing setuptools............done.
Installing pip...............done.

$ source venv/bin/activate

$ pip install -e git+https://github.com/roberts81/easy-thumbnails.git#egg=easy_thumbnails
Obtaining easy-thumbnails from git+https://github.com/roberts81/easy-thumbnails.git#egg=easy_thumbnails
  Cloning https://github.com/roberts81/easy-thumbnails.git to ./venv/src/easy-thumbnails
  Running setup.py egg_info for package easy-thumbnails

    no previously-included directories found matching 'docs/_build'
Installing collected packages: easy-thumbnails
  Running setup.py develop for easy-thumbnails

    no previously-included directories found matching 'docs/_build'
    Creating /Users/jterrace/test/venv/lib/python2.7/site-packages/easy-thumbnails.egg-link (link to .)
    Adding easy-thumbnails 1.2 to easy-install.pth file

    Installed /Users/jterrace/test/venv/src/easy-thumbnails
Successfully installed easy-thumbnails
Cleaning up...

$ python
Python 2.7.3 (default, Nov 12 2012, 09:50:25) 
[GCC 4.2.1 Compatible Apple Clang 4.1 ((tags/Apple/clang-421.11.66))] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import easy_thumbnails
>>> easy_thumbnails.VERSION
'1.2'

2voto

010110110101 Points 2240

Cela peut sembler idiot maintenant, puisque la question a été traitée et que cela concerne un problème différent, mais c'est la solution que j'ai trouvée lorsque j'ai eu cette erreur. (J'espère que cela aidera d'autres personnes)

Assurez-vous que vous avez un __init__.py en place. La structure devrait ressembler à ceci :

/myprojectname
  /myprojectname
    __init__.py
    mymodule.py
  setup.py

Ensuite, exécutez " pip install -e . "à partir du niveau supérieur myprojectname tout fonctionne. J'ai oublié le __init__.py dans mon cas, et j'ai oublié que c'était une cause possible pour ce message.

1voto

Dan Tenenbaum Points 411

J'ai eu un problème similaire et je l'ai résolu en supprimant mon virtualenv, en le recréant, en l'activant, puis (avant de faire quoi que ce soit d'autre) en mettant à jour pip et setuptools dans l'environnement. Commencez par ouvrir une nouvelle fenêtre de terminal (pour vous assurer que l'env. virtuel n'est pas activé) et naviguez dans le répertoire au-dessus duquel se trouve votre env. virtuel. Puis faites :

rm -rf env
virtualenv env
. env/bin/activate
pip install -U pip setuptools

Après cela, j'ai pu installer le paquet à partir de GitHub (à l'aide de pip ) et j'ai pu l'importer dans python.

0voto

Ben Roberts Points 8429

Bien qu'il s'agisse d'une question différente, les points suivants ce fil de discussion spécifique à Mac OSX 10.8 jusqu'à sa conclusion semblait résoudre le problème pour moi.

Plus précisément, j'ai installé distribute sans utiliser pip :

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py

Puis j'ai ajouté export VIRTUALENV_DISTRIBUTE=1 à mon fichier ~/.bashrc et redémarré mes terminaux.

J'ai désinstallé et réinstallé virtualenv et virtualenvwrapper juste pour être sûr.

Puis j'ai détruit mes anciens environnements virtuels et je les ai recréés. Pour une raison quelconque, réparer virtualenv pour l'utiliser et installer distribuer résout le problème. Farfelu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X