Question Utiliser Python 3 dans virtualenv


En utilisant virtualenv, Je cours 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'essaie:

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

512
2018-05-24 08:05


origine


Réponses:


simplement courir

virtualenv -p python3 envname

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

Il y avait un bug 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

902
2018-05-24 08:11



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

La création d’environnements virtuels se fait en exécutant le pyvenv   scénario:

pyvenv /path/to/new/virtual/environment

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

Comme pawciobiel correctement commentaires, pyvenv est déconseillé à partir de Python 3.6 et la nouvelle façon est:

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

151
2018-05-14 09:09



Installer les prérequis.

sudo apt-get install python3 python3-pip virtualenvwrapper

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

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

Définir dans l'environnement virtuel.

workon <venv-name>

Installez d'autres exigences en utilisant pip directeur chargé d'emballage.

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

Lorsque vous travaillez simultanément sur plusieurs projets python, il est généralement recommandé d'installer des paquets communs comme pdbpp globalement et ensuite les réutiliser dans virtualenvs.

L'utilisation de cette technique permet de gagner beaucoup de temps à récupérer des packages et à les installer, en plus de consommer 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 --system-site-packages en particulier pendant le développement car j'ai remarqué qu'il ralentit beaucoup le démarrage de Django. Je présume que l'initialisation de l'environnement Django analyse et ajoute manuellement tous les packages de site à partir du chemin du système, ce qui pourrait en être la raison. Même python manage.py shell devient très lent.

Après avoir dit cette expérience quelle option fonctionne le mieux. Pourrait être sûr de sauter juste --system-site-packages flag pour les projets Django.


43
2018-03-19 00:36



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

brew install pyenv

puis installez la version de Python que vous voulez:

pyenv install 3.5.0

et créez simplement virtualenv avec le chemin vers la version d'interprète nécessaire:

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

Voilà, vérifiez 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 en quelque sorte.


37
2017-09-19 20:38



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

travaillé pour moi.


29
2017-12-22 14:21



Vous pouvez spécifier spécifique Version de Python en créant un environnement.
Il est mentionné dans virtualenv.py 

virtualenv --python=python3.5 envname

Comment -p travaux

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)

9
2018-02-08 08:51



Python vient maintenant avec sa propre implémentation de l'environnement virtuel, sous le nom de "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   créer des environnements virtuels pour Python 3.3 et 3.4, et est   déconseillé dans Python 3.6.

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

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

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

(Suggérerait d'utiliser un guillemet double autour du chemin du répertoire s'il contient des espaces Ex: "C: / My Dox / Spaced Directory / Quelque chose")

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

Pour activer ou invoquer venv, vous devez:

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

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

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

Dans le cas, vous utilisez le code vs 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 installés dans votre environnement virtuel et affichera donc des erreurs lors de l'importation.

Ici est une méthode simple pour passer cela.

cd Workspace\Scripts
.\Activate.ps1
code .

Nous activons tout d'abord l'environnement, puis invoquons le code-vs afin que pylint démarre dans l'environnement et puisse voir tous les paquets locaux.


7
2018-02-16 13:19



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

which virtualenv

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

Il y a des années - quand j'étais encore plus ignorant - j'avais installé virtualenv et il masquait virtualenv fourni par mon système.

Après avoir enlevé ce vieux, virtualenv cassé, mes problèmes sont partis.


6
2018-06-21 16:32



J'avais le même ERROR message. 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

6
2017-09-11 01:59



Sur Mac, je devais faire ce qui suit pour le faire fonctionner.

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

4
2017-10-07 14:45



En python3.6 j'ai essayé python3 -m venv myenv, selon 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.


4
2018-02-09 02:54