web-dev-qa-db-fra.com

Utilisation de Python 3 dans virtualenv

En utilisant virtualenv , je lance mes projets avec la version par défaut de Python (2.7). Sur un projet, je dois utiliser Python 3.4.

J'ai utilisé brew install python3 pour l'installer sur mon Mac. Maintenant, comment créer un virtualenv qui utilise la nouvelle version?

par exemple. Sudo virtualenv envPython3

Si j'essaye:

virtualenv -p python3 test

Je reçois:

Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/usr/local/Cellar/python3/3.4.0_1/Frameworks/Python.framework/Versions/3.4'
New python executable in test/bin/python3.4
Also creating executable in test/bin/python
Failed to import the site module
Traceback (most recent call last):
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/site.py", line 67, in <module>
    import os
  File "/Users/user/Documents/workspace/test/test/bin/../lib/python3.4/os.py", line 634, in <module>
    from _collections_abc import MutableMapping
ImportError: No module named '_collections_abc'
ERROR: The executable test/bin/python3.4 is not functioning
ERROR: It thinks sys.prefix is '/Users/user/Documents/workspace/test' (should be '/Users/user/Documents/workspace/test/test')
ERROR: virtualenv is not compatible with this system or executable
702
Prometheus

tout simplement courir

virtualenv -p python3 envname

Mise à jour après l'édition de l'OP:

Il y avait un bogue dans la version de virtualenv de l'OP, comme décrit ici . Le problème a été résolu en exécutant:

pip install --upgrade virtualenv
1265
tbrisker

Python 3 a un support intégré pour les environnements virtuels - venv . Il serait peut-être préférable de l'utiliser à la place. En référence à la documentation:

La création d'environnements virtuels se fait en exécutant le script pyvenv:

pyvenv /path/to/new/virtual/environment

Mise à jour pour Python 3.6 et plus récent:

Comme pawciobiel correctement commentaires , pyvenv est obsolète à partir de Python 3.6 et le nouveau moyen est le suivant:

python3 -m venv /path/to/new/virtual/environment
226
geckon

Installez les prérequis.

Sudo apt-get install python3 python3-pip virtualenvwrapper

Créez un environnement virtuel basé sur Python3. Activez éventuellement le drapeau --system-site-packages.

mkvirtualenv -p /usr/bin/python3 <venv-name>

Définir dans l'environnement virtuel.

workon <venv-name>

Installez d'autres exigences en utilisant pip gestionnaire de paquets.

pip install -r requirements.txt
pip install <package_name>

Lorsque vous travaillez sur plusieurs projets python simultanément, il est généralement recommandé d'installer globalement des packages tels que pdbpp, puis de les réutiliser dans virtualenvs.

L'utilisation de cette technique permet de gagner beaucoup de temps sur la récupération et l'installation des packages, en plus de ne consommer qu'un minimum d'espace disque et de bande passante réseau.

Sudo -H pip3 -v install pdbpp
mkvirtualenv -p $(which python3) --system-site-packages <venv-name>

Instructions spécifiques à Django

S'il y a beaucoup de paquets python à l'échelle du système, il est recommandé de ne pas utiliser l'indicateur --system-site-packages, en particulier pendant le développement, car j'ai constaté qu'il ralentissait beaucoup Django au démarrage. . Je présume que l'initialisation de l'environnement Django consiste à analyser et à ajouter manuellement tous les packages de site à partir du chemin système, ce qui peut en être la raison. Même python manage.py Shell devient très lent.

Ayant dit cette expérience quelle option fonctionne mieux. Peut-être serait-il prudent de sauter simplement l'indicateur --system-site-packages pour les projets Django.

54
Sandeep

J'ai essayé pyenv et c'est très pratique pour changer de version de python (globale, locale dans le dossier ou dans le virtualenv):

brew install pyenv

puis installez la version Python que vous voulez:

pyenv install 3.5.0

et créez simplement virtualenv avec le chemin d'accès à la version d'interprète requise:

virtualenv -p /Users/johnny/.pyenv/versions/3.5.0/bin/python3.5 myenv

Ça y est, vérifiez la version:

. ./myenv/bin/activate && python -V

Il y a aussi des plugins pour pyenv pyenv-virtualenv mais ça n'a pas fonctionné pour moi.

50
Johnner
virtualenv --python=/usr/bin/python3 <name of env>

a travaillé pour moi.

33
bewithaman

Vous pouvez spécifier une version spécifique de Python lors de la création de l'environnement.
C'est mentionné dans virtualenv.py

virtualenv --python=python3.5 envname

Dans certains cas, il doit s'agir du chemin complet de l'exécutable:

virtualenv --python=/Users/username/.pyenv/versions/3.6.0/bin/python3.6 envname

Comment fonctionne -p

parser.add_option(
    '-p', '--python',
    dest='python',
    metavar='PYTHON_EXE',
    help='The Python interpreter to use, e.g., --python=python3.5 will use the python3.5 '
    'interpreter to create the new environment.  The default is the interpreter that '
    'virtualenv was installed with (%s)' % sys.executable)
18
Kiran Jasvanee

J'ai eu le même message ERROR. La solution de tbrisker n'a pas fonctionné dans mon cas. Au lieu de cela, le problème a été résolu:

$ python3 -m venv .env
11
Aziz Alto

Python vient maintenant avec sa propre implémentation d'environnement virtuel, appelée "venv". Je suggère d'utiliser cela, au lieu de virtualenv.

Citant de venv - docs ,

Déconseillé depuis la version 3.6: pyvenv était l'outil recommandé pour la création d'environnements virtuels pour Python 3.3 et 3.4. Il est déconseillé dans Python 3.6.

Modifié dans la version 3.5: L'utilisation de venv est maintenant recommandée pour la création d'environnements virtuels.

Pour windows, pour commencer venv sur un projet, ouvrez cmd:

python -m venv "c:\path\to\myenv"

(Suggère d'utiliser des guillemets autour du chemin du répertoire s'il contient des espaces. Ex: "C:/My Dox/Spaced Directory/Something")

Une fois que venv est configuré, vous verrez de nouveaux dossiers dans votre répertoire de projet. L'un d'eux serait "Scripts".

Pour activer ou invoquer venv, il vous faut:

C:\> <venv>\Scripts\activate.bat

Vous pouvez désactiver un environnement virtuel en tapant "désactiver" dans votre shell. Avec cela, vous êtes maintenant prêt à installer les bibliothèques spécifiques à votre projet, qui se trouveront dans le dossier "Lib".

=============================== Modifier 1 =============== ==================== Le scénario qui sera discuté ci-dessous n'est pas ce qui avait été demandé à l'origine, ajoutez-le simplement si quelqu'un utilise vscode avec l'extension python

Si vous utilisez vs code avec son extension python, il est possible que vous rencontriez un problème avec son pylint qui pointe vers l'installation globale. Dans ce cas, pylint ne pourra pas voir les modules installés dans votre environnement virtuel et affichera donc des erreurs lors de l'importation.

Ici est une méthode simple pour dépasser cela.

cd Workspace\Scripts
.\Activate.ps1
code .

En gros, nous activons d'abord l'environnement, puis appelons vs-code afin que pylint démarre dans l'environnement et puisse voir tous les paquets locaux.

7
Blaze

En python3.6, j'ai essayé python3 -m venv myenv, conformément à la documentation, mais cela prenait tellement de temps. Donc, la commande très simple et rapide est python -m venv yourenv Cela a fonctionné pour moi sur python3.6.

7
Sujeet Agrahari

En plus des autres réponses, je vous recommande de vérifier quelle instance de virtualenv vous exécutez:

which virtualenv

Si cela donne quelque chose dans/usr/local/bin, alors il est possible - même probable - que vous ayez installé virtualenv (en utilisant éventuellement une instance d'easy_tools ou de pip) sans utiliser le gestionnaire de paquets de votre système (brew dans le cas de OP). C'était mon problème.

Il y a des années - quand j'étais encore plus ignorant - j'avais installé virtualenv et cela masquait la virtualenv fournie par le paquet de mon système.

Après avoir supprimé cette vieille machine virtuelle cassée, mes problèmes ont disparu.

6
sage

C’est tout ce dont vous avez besoin pour exécuter un environnement virtuel dans python/python3

D'abord, assurez-vous que vous avez virtualenv et maintenant

Courir:

virtualenv -p python3 <env name>

Parfois la cmd ci-dessus échoue, utilisez simplement ceci:

python3 -m virtualenv <env_name>  # you can specify full path instead <env_name> to install the file in a different location other than the current location

Activez maintenant l’env virtuel:

source <env_name>/bin/activate

Ou:

source `pwd`/<env_name>/bin/activate

Run (pour sortir):

deactivate 
6
Kohn1001

Sur Mac, je devais faire ce qui suit pour que cela fonctionne.

mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
5
Stryker

virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME> ceci ajoutera le chemin python pour votre environnement virtuel.

3
Hardik Gajjar

Si vous installez python3 (brew install python3) avec virtualenv burrito , vous pouvez alors faire mkvirtualenv -p $(which python3) env_name

Bien sûr, je sais que virtualenv burrito n’est qu’un emballage, mais il m’a bien servi au fil des ans, en réduisant certaines courbes d’apprentissage.

3
Antony

Cela a fonctionné pour moi

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
2
Dadaso Zanzane

Pour ceux qui ont des problèmes en travaillant avec Anaconda3 (Python 3).

Vous pourriez utiliser

conda create -n name_of_your_virtualenv python=python_version 

Pour activer l'environnement (Linux, MacOS)

source activate name_of_your_virtualenv

Pour les fenêtres

activate name_of_your_virtualenv
2
jkhosla

Pour ceux d'entre vous qui utilisent pipenv et souhaitez installer une version spécifique:

pipenv install --python 3.6
1
Vlad Bezden

Je voulais conserver python 2.7.5 comme version par défaut sous Centos 7, mais avoir python 3.6.1 dans un environnement virtuel fonctionnant avec d'autres environnements virtuels dans python 2 .X

J'ai trouvé le lien ci-dessous la meilleure solution pour la dernière version de python (python 3.6.1) https://www.digitalocean.com/community/tutorial_series/how -à-installer-et-configurer-un-environnement-programmation-local-pour-python- . Il montre les étapes pour différentes plates-formes mais les étapes de base sont

  1. Installez python3.x (s'il n'est pas présent) pour votre plate-forme
  2. Installez python3.x-devel pour votre plate-forme
  3. Créer un environnement virtuel dans python 3.x (par exemple, $ python3.6 -m venv virenv_test_p3 /)
  4. Activer l'environnement de test pour python 3.x (par exemple, source virenv_test_p3/bin/activate)
  5. Installez les packages que vous souhaitez utiliser dans votre nouvel environnement virtuel python 3 et qui sont pris en charge (par exemple, pip install Django == 1.11.2)
1
Gunnar Sigfusson

J'ai essayé tous les trucs ci-dessus, ça n'a toujours pas marché. Donc, en tant que force brute, je viens de réinstaller l’Anaconda, le Virtualenv ... et cela a fonctionné.

Amans-MacBook-Pro:~ amanmadan$ pip install virtualenv
You are using pip version 6.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting virtualenv
  Downloading virtualenv-15.0.3-py2.py3-none-any.whl (3.5MB)
    100% |████████████████████████████████| 3.5MB 114kB/s 
Installing collected packages: virtualenv
Successfully installed virtualenv-15.0.3
Amans-MacBook-Pro:python amanmadan$ virtualenv my_env
New python executable in /Users/amanmadan/Documents/HadoopStuff/python/my_env/bin/python
Installing setuptools, pip, wheel...done.
Amans-MacBook-Pro:python amanmadan$ 
1
Aman Madan

Sur la ligne de commande Windows, les éléments suivants ont fonctionné pour moi. Commencez par trouver où se trouvent vos exécutables python:

where python

Cela produira les chemins vers les différents python.exe sur votre système. Voici les miennes:

C:\Users\carandangc\Anaconda3\python.exe
C:\Python27\python.exe

Donc, pour Python3, celui-ci était situé dans le premier chemin pour moi, alors je suis allé au dossier racine de l'application où je veux créer un dossier d'environnement virtuel. Ensuite, j'exécute ce qui suit, qui inclut le chemin d'accès à mon exécutable Python3, en nommant mon environnement virtuel 'venv':

virtualenv --python=/Users/carandangc/Anaconda3/python.exe venv

Ensuite, activez l'environnement virtuel:

call venv\Scripts\activate.bat

Enfin, installez les dépendances pour cet environnement virtuel:

pip install -r requirements.txt

Ce fichier Requirements.txt peut être rempli manuellement si vous connaissez les bibliothèques/modules nécessaires à votre application dans l'environnement virtuel. Si l'application s'exécutait dans un autre environnement, vous pouvez alors produire automatiquement les dépendances en lançant ce qui suit (cd dans le dossier de l'application dans l'environnement où elle fonctionne):

pip freeze > requirements.txt

Ensuite, une fois que vous avez le fichier exigences.txt que vous avez 'gelé', vous pouvez installer les exigences sur un autre ordinateur ou un environnement propre avec les éléments suivants (après cd dans le dossier de l'application):

pip install -r requirements.txt

Pour voir votre version python dans l'environnement virtuel, exécutez:

python --version

Alors voila ... votre Python3 est en cours d'exécution dans votre environnement virtuel. Sortie pour moi:

Python 3.7.2
0
Carlo Carandang

J'ai eu la même erreur en raison d'un conflit avec l'installation de miniconda3. Ainsi, lorsque vous tapez "which virtualenv" et si vous avez installé miniconda et qu'il pointe vers cette installation, vous pouvez le supprimer (si vous êtes comme moi et n'avez pas bougé) ou encore) ou modifiez votre variable d’environnement pour pointer vers l’installation souhaitée.

0
PrincessPea