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
19 réponses
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
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.
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.
virtualenv --python=/usr/bin/python3 <name of env>
travaillait pour moi.
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)
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
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.
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.
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.
Sur Mac, j'ai eu à faire pour le faire fonctionner.
mkvirtualenv --python=/usr/bin/python3 YourEnvNameHere
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.
virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME>
cela ajoutera python3
chemin pour votre environnement virtuel.
Il a travaillé 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 Windows
activate name_of_your_virtualenv
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$
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
- installez python3.x (s'il n'est pas présent) pour votre plate-forme
- installez python3.x-devel pour votre plate-forme
- créer un environnement virtuel en python 3.x (par exemple $ python3.6-m venv virenv_test_p3/)
- activez l'environnement de test pour python 3.x (par exemple source virenv_test_p3/bin / activate)
- 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)
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.
pour ceux d'entre vous qui utilisent pipenv et veulent installer la version spécifique:
pipenv install --python 3.6