2
votes

Utilisez python2.7 dans venv où python3 est python par défaut

J'ai python2.7, python3.7, python3.6 sur ma machine. Je ne sais toujours pas comment gérer et voir l'emplacement des trois versions de python.

Actuellement, je tape simplement python avec le nom de la version pour ouvrir ce terminal ou exécuter un script.

J'ai fait python3.6 par défaut en créant un alias dans ~ / .bashrc .

J'ai installé virtualenv en utilisant python3.6, donc chaque fois que je crée venc par défaut, il contient python3.6.

Pour créer venv avec python2.7 j'ai essayé -

virtualenv -p /usr/bin/python2.7 /Users/karim/Documents/venv2.7

Mais ici aussi dans ce venv2.7 quand je vois la version python, cela donne 3.6 . Quand je tape python2.7 dans le terminal, cela ouvre python2.7.

Je peux faire un alias pour python2.7 étant dans un environnement virtuel mais je doute que cela puisse également créer python2.7 default en dehors de venv.

  1. Comment créer un environnement virtuel avec python2.7 par défaut?
  2. Pouvez-vous me référer un article qui explique comment gérer plusieurs versions de python, passer de l'une à l'autre, voir les emplacements

J'ai vraiment vérifié tous les threads SO mais aucun article ne m'a aidé à créer venv avec python2.7 dans un système ayant python3.6 par défaut.


1 commentaires

@saleem mentionné à installez le python à partir du centre logiciel (je suppose que vous utilisez ubuntu). si python installe le centre logiciel du formulaire (python 2 et python 3), vous n'aurez pas besoin de changer de chemin, il suffit d'utiliser le mot-clé pour invoder python 3 et python2. puis à partir du dessous, utilisez n'importe quelle méthode pour créer un environnement virtuel


5 Réponses :


3
votes

de Installer et exécuter Python 3 en même temps que Python 2 , vous devez installer (python 2 et python 3) le python à partir du centre logiciel , puis utiliser la solution fournie ici pour créer un environnement virtuel

si python 2.7 est dans votre système et l'a installé et que vous avez utilisé l'alias python27 dans ~ / .bashrc pour exécuter python 2.7

alors vous pouvez créer un environnement virtuel

python27 -m virtualenv


3 commentaires

si je fais l ' alias python27 dans ~ / .bashrc alors il fera python27 par défaut sur ma machine, non? Je ne veux pas que python27 soit par défaut sur ma machine. Je veux juste l'utiliser dans venv


non, cela ne le rendra pas par défaut, c'est juste un mot-clé pour exécuter python2.7. si dans bashrc python est associé à python 3.7 alors en utilisant python vous serez associé à python 3.7 (par défaut)


@JhonPatric vous pouvez également utiliser anaconda pour travailler dans différents environnements python



1
votes

Activez-vous correctement l'environnement virtuel? Après avoir créé le virtualenv, vous devez lancer la commande

fathead:~ sholden$ python3.7 -m pip install virtualenv
Looking in indexes: https://pypi.org/simple, https://pypi.python.org/simple
Collecting virtualenv
  Downloading https://files.pythonhosted.org/packages/7e/1b/6c00d57127608793e16e8b7f813e64d58a1938505c42fe190d1386ab41e1/virtualenv-16.4.0-py2.py3-none-any.whl (2.0MB)
    100% |████████████████████████████████| 2.0MB 3.4MB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.4.0

pour changer votre environnement afin que la commande python fasse référence à l'interpréteur dans virtualenv. Souvenez-vous que virtualenv n'a rien à voir avec votre répertoire de travail actuel ...

Est-il possible que le virtualenv que vous utilisez soit associé au mauvais binaire Python? J'ai beaucoup de Pythons sur mon système, y compris Python3.7 et Python 2.7 dans / usr / local / bin :

fathead:~ sholden$ python3.7 -m virtualenv -p /usr/local/bin/python2.7 venv2.7
Running virtualenv with interpreter /usr/local/bin/python2.7
New python executable in /Users/sholden/venv2.7/bin/python2.7
Also creating executable in /Users/sholden/venv2.7/bin/python
Installing setuptools, pip, wheel...
done.

Le quel (également type sous MacOS) qui vous indique à quel exécutable une commande est associée. J'ai vérifié que j'obtenais le bon python3.7 avec

fathead:~ sholden$ which python3.7
/usr/local/bin/python3.7

Pour m'assurer que j'utilise le bon virtualenv de Python que j'utilise le binaire Python pour l'exécuter:

fathead:~ sholden$ ls -l /usr/local/bin/python*
lrwxr-xr-x  1 sholden  staff   38  6 Dec 12:26 /usr/local/bin/python@ -> ../Cellar/python@2/2.7.15_1/bin/python
lrwxr-xr-x  1 sholden  staff   38  6 Dec 12:34 /usr/local/bin/python-build@ -> ../Cellar/pyenv/1.2.8/bin/python-build
lrwxr-xr-x  1 sholden  staff   45  6 Dec 12:26 /usr/local/bin/python-config@ -> ../Cellar/python@2/2.7.15_1/bin/python-config
lrwxr-xr-x  1 sholden  staff   39  6 Dec 12:26 /usr/local/bin/python2@ -> ../Cellar/python@2/2.7.15_1/bin/python2
lrwxr-xr-x  1 sholden  staff   46  6 Dec 12:26 /usr/local/bin/python2-config@ -> ../Cellar/python@2/2.7.15_1/bin/python2-config
lrwxr-xr-x  1 sholden  staff   41  6 Dec 12:26 /usr/local/bin/python2.7@ -> ../Cellar/python@2/2.7.15_1/bin/python2.7
lrwxr-xr-x  1 sholden  staff   48  6 Dec 12:26 /usr/local/bin/python2.7-config@ -> ../Cellar/python@2/2.7.15_1/bin/python2.7-config
lrwxr-xr-x  1 sholden  staff   34  6 Dec 12:22 /usr/local/bin/python3@ -> ../Cellar/python/3.7.1/bin/python3
lrwxr-xr-x  1 sholden  staff   41  6 Dec 12:22 /usr/local/bin/python3-config@ -> ../Cellar/python/3.7.1/bin/python3-config
lrwxr-xr-x  1 sholden  staff   36  6 Dec 12:22 /usr/local/bin/python3.7@ -> ../Cellar/python/3.7.1/bin/python3.7
lrwxr-xr-x  1 sholden  staff   43  6 Dec 12:22 /usr/local/bin/python3.7-config@ -> ../Cellar/python/3.7.1/bin/python3.7-config
lrwxr-xr-x  1 sholden  staff   37  6 Dec 12:22 /usr/local/bin/python3.7m@ -> ../Cellar/python/3.7.1/bin/python3.7m
lrwxr-xr-x  1 sholden  staff   44  6 Dec 12:22 /usr/local/bin/python3.7m-config@ -> ../Cellar/python/3.7.1/bin/python3.7m-config
lrwxr-xr-x  1 sholden  staff   39  6 Dec 12:26 /usr/local/bin/pythonw@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw
lrwxr-xr-x  1 sholden  staff   40  6 Dec 12:26 /usr/local/bin/pythonw2@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw2
lrwxr-xr-x  1 sholden  staff   42  6 Dec 12:26 /usr/local/bin/pythonw2.7@ -> ../Cellar/python@2/2.7.15_1/bin/pythonw2.7
-rwxr-xr-x@ 1 sholden  staff  230 25 Sep  2017 /usr/local/bin/pythonz*

Il se peut que votre Python 3.7 n'ait pas virtualenv installé. Si tel est le cas, installez-le avec

source /Users/karim/Documents/venv2.7/bin/activate

Après avoir créé le virtualenv, vous devriez pouvoir l'activer comme décrit.


5 commentaires

Oui, je fais exactement pour démarrer ce venv. Mais dans l'environnement virtuel, le terminal python s'ouvre avec python3.6


Je l'ai mis à jour pour essayer de donner quelques indices supplémentaires sur ce qui pourrait ne pas se passer ici. \


J'ai essayé python3.7 -m virtualenv -p /usr/local/bin/python2.7 / Users / karim / Documents / ven2 qui s'est terminé avec succès mais quand je le démarre, il a 3.6


Êtes-vous sûr que /usr/local/bin/python2.7 n'est pas un interpréteur 3.6? Utilisez la commande which pour voir quel interpréteur s'exécute lorsque vous tapez python .


Et pourquoi 3.6 et non 3.7 - c'est encore plus étrange!



3
votes

J'ai fait python3.6 par défaut en créant un alias dans ~ / .bashrc

C'est la source de votre problème. Si je comprends bien, vous avez créé un alias pour python , ce qui fait que votre système ne recherche pas votre PATH pour votre version de python, mais utilise plutôt votre alias. Ce comportement ne change pas lors de l'utilisation de virtualenv, car les activer modifiera votre PATH , mais l'alias empêche toujours l'utilisation d'autres versions de python.

Pour faire une installation de python "par défaut ", vous devez modifier votre PATH en ajoutant la version de python souhaitée au début, sans créer d'alias.

Vous pouvez utiliser les commandes

export PATH="<Directory of desired python version>:$PATH"

4 commentaires

Merci d'avoir montré un problème avec les alias. Avez-vous de l'aide pour modifier PATH ?


Actuellement, lorsque j'ouvre mon bashrc , il est vide. Le python actuel est 3.6 (car lorsque je tape python, il ouvre python 3.6). Supposons maintenant que je veuille créer un environnement virtuel avec python 2.7, pouvez-vous me dire quelles étapes dois-je suivre?


J'ai exporté, mais python2.7 n'est toujours pas disponible dans venv par défaut


export n'a aucune incidence sur les alias, et comme la réponse l'explique déjà, les alias contournent complètement votre PATH de toute façon. unalias python devrait supprimer l'alias de votre session en cours.



0
votes

J'ai expliqué dans les commentaires et la description de la question que j'ai ajouté

alias python=python3.6

Dans bashrc

et j'ai essayé de créer un environnement virtuel python2.7 , il ouvre toujours 3.6 dedans.

Personne n'a parlé du fichier bash_profile .

Dans un autre article en regardant pyenv J'ai vu qu'ils considéraient bash_profile comme alias. J'ai soudainement vérifié le mien, et

alias python = python3.6

y était. C'est pourquoi il prenait également python3.6 dans l'environnement virtuel python2.7.

J'ai commenté cet alias, alors il ne prend pas python 3.6 globalement.

Un point important à noter est - Vous changez d'alias et voulez voir son effet, ouvrir un nouvel onglet ou terminal et y tester. Si vous essayez dans l'ancien environnement virtuel en cours d'exécution, il se peut qu'il affiche uniquement l'ancienne version de Python.

Merci à tous pour vos réponses et votre temps. Cela m'a aidé à en apprendre davantage.


0 commentaires

0
votes

Si vous utilisez pycharm, vous pouvez créer un nouvel environnement virtuel sous settings> project> cog symbol, drodown menu: add.

Ici, vous pouvez spécifier quel est votre interpréteur python de base, pointez ceci vers l'endroit où python3 ou python2 sont installés et pycharm fera le travail pour vous.


0 commentaires