2017-09-06 1 views
1

I mis à jour les versions de mkvirtualenv et virtualenvPourquoi virtualenvwrapper crée-t-il des chemins liés à python2 au lieu de python3?

$ sudo pépin installer --upgrade virtualenv virtualenvwrapper

parce que toute ma vie je ne Python 2, et je voulais utiliser -now- Python 3 Le virtualenvwrapper a eu quelques problèmes.

J'ai essayé de créer un environnement virtuel pour mon installation python3:

mkvirtualenv $ py3test -p/usr/bin/python3

L'environnement est créé dans ~/.virtualenvs/py3test. Une fois actif, je veux installer un paquet que je fait:

(py3test) $ pip installer python-cantrips (py3test) $ pip geler

Et le paquet est correctement installé. Puis-je installer ipython et l'exécuter:

(py3test) $ pip ipython installer (py3test) ipython $

Et j'entre ipython de façon appropriée. Mais alors je ...

import cantrips 

Et il explose avec un ImportError. Ensuite, je vérifie sys.path. Et le problème est ici: sys.path inclut un chemin du type: '/home/myuser/.virtualenvs/py3test/lib/python2.7/site-packages'. Je ne me souviens pas si le chemin est exact ou non, puisque je ne suis pas dans un tel ordinateur en ce moment. Mais je peux avoir une chose sûre: l'environnement a été créé avec python3 (le répertoire n'est pas python2.7 mais python3.5 dans mon virtualenv). Donc: Pourquoi virtualenv crée-t-il un environnement pour python3 mais en ajoutant les chemins comme s'il s'agissait d'un environnement python2.7?

+1

Avez-vous essayé d'utiliser 'pip3'? Si vous voulez avoir env pour Python3 lancez ceci 'python3 -m venv ENV' – AndMar

+1

Quand vous venez d'exécuter' python' quelle version est montrée? –

+0

@KlausD.La version python par défaut que j'utilise est Python 2.7. Dois-je changer l'option python par défaut avant d'exécuter mkvirtualenv? Quel est le but de l'option -p dans virtualenv si c'est le cas? –

Répondre

2

Trouvé! Il n'y avait pas de problème avec virtualenv ou virtualenvwrapper. Le problème était avec ipython. En fait, il n'y a pas de problème spécifique avec ipython mais avec la façon dont les scripts sont accessibles dans un virtualenv. Globalement, j'avais ipython installé (qui fonctionne avec le python27 global). Lorsque j'ai installé ipython dans mon environnement python3 local, le chemin d'accès (shell) n'a pas été mis à jour tant que je n'ai pas actualisé de nouveau l'environnement (par exemple, désactivation, activation à nouveau). Donc quand j'ai essayé encore, le ipython était le approprié (le ipython local dans mon environnement avec 3.5), et le chemin généré était le prévu.