Utiliser Python 3 dans virtualenv

en utilisant virtualenv , j'exécute 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?

p.ex. sudo virtualenv envPython3

Si j'essaie:

virtualenv -p python3 test

, j'obtiens:

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
550
demandé sur Alan W. Smith 2014-05-24 12:05:53

19 réponses

simplement exécuter

virtualenv -p python3 envname

mise à Jour après l'OP s edit:

il y avait un bug dans la version OP de virtualenv, comme décrit ici . Le problème a été corrigé en exécutant:

pip install --upgrade virtualenv
974
répondu tbrisker 2014-05-24 09:39:10

Python 3 a un support intégré pour les environnements virtuels - venv . Il pourrait être préférable d'utiliser à la place. Se référant au docs:

la Création d'environnements virtuels se fait par l'exécution de la pyvenv script:

pyvenv /path/to/new/virtual/environment

mise à jour pour Python 3.6 et versions plus récentes:

Comme pawciobiel correctement commentaires , pyvenv est obsolète de Python 3.6 et la nouvelle façon est:

python3 -m venv /path/to/new/virtual/environment
160
répondu geckon 2017-05-23 12:10:47

installer les prérequis.

sudo apt-get install python3 python3-pip virtualenvwrapper

crée un environnement virtuel basé sur Python3. Possibilité d'activer le drapeau --system-site-packages .

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

placé dans l'environnement virtuel.

workon <venv-name>

installer d'autres exigences en utilisant pip package manager.

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 des paquets communs comme pdbpp globalement et de les réutiliser dans virtualenvs.

L'utilisation de cette technique permet d'économiser beaucoup de temps passé à récupérer des paquets et à les installer, en plus de réduire au minimum l'espace disque et la bande passante réseau.

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

Django instructions spécifiques

S'il y a beaucoup de paquets Python à l'échelle du système, il est recommandé de ne pas utiliser --system-site-packages drapeau surtout pendant le développement car j'ai remarqué qu'il ralentit beaucoup le démarrage de Django. Je suppose que L'initialisation de L'environnement Django est le balayage manuel et l'ajout de tous les paquets du site à partir du chemin du système, ce qui pourrait en être la raison. Même python manage.py shell devient très lent.

ayant dit que l'expérience quelle option fonctionne mieux. Peut-être serait-il juste de sauter le drapeau --system-site-packages pour les projets Django.

45
répondu Sandeep 2018-04-10 09:40:10

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

brew install pyenv

puis installez la version Python que vous voulez:

pyenv install 3.5.0

et tout simplement créer virtualenv avec le chemin vers la version d'interpréteur nécessaire:

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

c'est ça, vérifier la version:

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

il y a aussi un plugin pour pyenv pyenv-virtualenv mais ça n'a pas marché pour moi.

38
répondu Johnner 2015-09-19 20:38:09
virtualenv --python=/usr/bin/python3 <name of env>

travaillait pour moi.

30
répondu bewithaman 2015-12-22 14:21:01

vous pouvez spécifier Version de Python tout en créant l'environnement.

C'est mentionné dans virtualenv.py

virtualenv --python=python3.5 envname

Dans certains cas, cela doit être le chemin complet de l'exécutable:

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

Comment -p œuvres

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)
10
répondu KiranJasvanee 2018-09-07 22:50:33

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

$ python3 -m venv .env
9
répondu Aziz Alto 2017-09-11 01:59:32

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

citant de venv-docs ,

déprécié depuis la version 3.6: pyvenv était l'outil recommandé pour créer des environnements virtuels pour Python 3.3 et 3.4, et est déprécié en Python 3.6.

modifié dans la version 3.5: L'utilisation de venv est maintenant recommandé pour créer des environnements virtuels.

Pour windows, pour lancer venv sur certains projets, ouvrir cmd:

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

(suggérerait d'utiliser un double guillemet autour du chemin du répertoire s'il contient des espaces. Ex: "C:/My Dox/Espacés Répertoire/De Quelque Chose")

une fois que venv est configuré, vous verrez de nouveaux dossiers à l'intérieur de votre répertoire de projet. L'un d'eux serait "Script."

pour activer ou invoquer venv vous avez besoin:

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 vos bibliothèques spécifiques au projet, qui se trouvent sous le dossier "Lib".

================================ Modifier 1 ==================================== Le scénario qui sera discuté ci-dessous n'est pas ce qui a demandé, juste ajouter ceci au cas où quelqu'un utiliserait vscode avec l'extension python

dans le cas où, vous utilisez vs code avec son extension python, vous pourriez rencontrer un problème avec son pylint qui pointe vers l'installation globale. Dans ce cas, pylint ne pourra pas voir les modules qui sont installés dans votre environnement virtuel et donc affichera des erreurs lors de l'importation.

Ici est une méthode simple de sortir de cette.

cd Workspace\Scripts
.\Activate.ps1
code .

nous activons essentiellement l'environnement d'abord et ensuite en invoquant vs-code pour que pylint commence dans l'environnement et puisse voir tous les paquets locaux.

7
répondu Blaze 2017-04-26 13:37:19

en python3.6 j'ai essayé python3 -m venv myenv , d'après la documentation, mais ça prenait tellement de temps. Très simple et rapide de la commande python -m venv yourenv Ça a marché pour moi sur python3.6.

7
répondu Sujeet Agrahari 2018-02-09 02:54:35

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

which virtualenv

si cela aboutit à quelque chose dans /usr/local/bin, alors il est possible - même probable - que vous ayez installé virtualenv (éventuellement en utilisant une instance de easy_tools ou 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 virtualenv fourni par le paquet de mon système.

après avoir enlevé ce vieux virtualenv cassé, mes problèmes ont disparu.

6
répondu sage 2015-06-21 16:32:52

Sur Mac, j'ai eu à faire pour le faire fonctionner.

mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
4
répondu Stryker 2016-10-07 14:45:39

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 est juste un papier d'emballage, mais il m'a bien servi au fil des ans, réduisant quelques courbes d'apprentissage.

3
répondu Antony 2016-01-15 03:42:59

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

3
répondu Hardik Gajjar 2017-05-01 07:21:17

Il a travaillé pour moi

virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
2
répondu Dadaso Zanzane 2015-10-09 07:11:29

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 Windows

activate name_of_your_virtualenv
2
répondu 2324 2017-05-20 14:49:30

j'ai essayé tous les trucs ci-dessus, ça n'a pas marché. Donc comme une force brute, je viens de réinstaller l'anaconda, réinstaller 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
répondu Aman Madan 2016-09-30 13:24:18

je voulais garder python 2.7.5 comme version par défaut sur Centos 7 mais avoir Python 3.6.1 dans un environnement virtuel fonctionnant avec d'autres environnements virtuels en 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-to-install-and-set-up-a-local-programming-environment-for-python-3 . Il montre les étapes pour les différentes plates-formes, mais le 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 en python 3.x (par exemple $ python3.6-m venv virenv_test_p3/)
  4. activez l'environnement de test pour python 3.x (par exemple source virenv_test_p3/bin / activate)
  5. Installer les paquets que vous souhaitez utiliser dans votre nouveau python 3 environnement virtuel et qui sont pris en charge ( par exemple pip install Django=1.11.2)
0
répondu Gunnar Sigfusson 2017-06-28 10:39:21

j'ai eu la même erreur en raison d'un conflit avec miniconda3 install donc quand vous tapez" which virtualenv " et si vous avez installé miniconda et qu'il pointe vers cette installation, vous pouvez soit le supprimer (si vous m'aimez et ne l'avez pas encore déplacé) ou changer votre variable d'environnement pour pointer vers l'installation que vous voulez.

0
répondu PrincessPea 2017-08-16 23:35:33

pour ceux d'entre vous qui utilisent pipenv et veulent installer la version spécifique:

pipenv install --python 3.6
0
répondu Vlad Bezden 2018-06-29 15:34:40