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
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
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
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>
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.
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.
virtualenv --python=/usr/bin/python3 <name of env>
a travaillé pour moi.
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)
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
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.
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.
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.
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
Sur Mac, je devais faire ce qui suit pour que cela fonctionne.
mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME>
ceci ajoutera le chemin python pour votre environnement virtuel.
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.
Cela a fonctionné pour moi
virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
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
Pour ceux d'entre vous qui utilisent pipenv et souhaitez installer une version spécifique:
pipenv install --python 3.6
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
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$
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
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.