it-swarm.com.de

Mit Python 3 in virtualenv

Mit virtualenv starte ich meine Projekte mit der Standardversion von Python (2.7). Bei einem Projekt muss ich Python 3.4 verwenden.

Ich habe brew install python3 verwendet, um es auf meinem Mac zu installieren. Wie erstelle ich nun eine virtuelle Umgebung, die die neue Version verwendet?

z.B. Sudo virtualenv envPython3

Wenn ich es versuche:

virtualenv -p python3 test

Ich bekomme:

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

einfach laufen

virtualenv -p python3 envname

Update nach OP's edit:

Es gab einen Fehler in der OP-Version von virtualenv, wie beschrieben hier . Das Problem wurde durch Ausführen von behoben:

pip install --upgrade virtualenv
1265
tbrisker

Python 3 bietet eine integrierte Unterstützung für virtuelle Umgebungen - venv . Es könnte besser sein, das stattdessen zu verwenden. Unter Bezugnahme auf die Dokumente:

Die Erstellung virtueller Umgebungen erfolgt durch Ausführen des Skripts pyvenv:

pyvenv /path/to/new/virtual/environment

Update für Python 3.6 und neuer:

As pawciobiel richtig comments , pyvenv ist veraltet ab Python 3.6 und der neue Weg ist:

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

Installationsvoraussetzungen.

Sudo apt-get install python3 python3-pip virtualenvwrapper

Erstellen Sie eine Python3-basierte virtuelle Umgebung. Optional können Sie das --system-site-packages -Flag aktivieren.

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

In die virtuelle Umgebung einstellen.

workon <venv-name>

Installieren Sie andere Anforderungen mithilfe von pip Package Manager.

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

Wenn Sie an mehreren python Projekten gleichzeitig arbeiten, wird normalerweise empfohlen, allgemeine Pakete wie pdbpp global zu installieren und sie dann in virtuellen Umgebungen wiederzuverwenden.

Die Verwendung dieser Technik spart viel Zeit beim Abrufen und Installieren von Paketen, abgesehen davon, dass nur minimaler Speicherplatz und Netzwerkbandbreite benötigt werden.

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

Django spezifische Anweisungen

Wenn es viele systemweite python Pakete gibt, wird empfohlen, --system-site-packages Flag nicht zu verwenden, insbesondere während der Entwicklung, da ich bemerkt habe, dass es den Start von Django sehr verlangsamt . Ich gehe davon aus, dass bei der Django -Umgebungsinitialisierung alle Site-Pakete manuell vom Systempfad gescannt und angehängt werden, was der Grund sein könnte. Sogar python manage.py Shell wird sehr langsam.

Nach diesem Experiment funktioniert welche Option besser. Könnte sicher sein, nur das --system-site-packages -Flag für Django -Projekte zu überspringen.

54
Sandeep

Ich habe versucht pyenv und es ist sehr praktisch, um python Versionen zu wechseln (global, lokal im Ordner oder in der virtuellen Umgebung):

brew install pyenv

installieren Sie dann die gewünschte Python -Version:

pyenv install 3.5.0

und erstelle einfach virtualenv mit dem Pfad zur benötigten Interpreter-Version:

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

Das war's, überprüfe die Version:

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

Es gibt auch Plugins für pyenv pyenv-virtualenv , aber irgendwie hat es bei mir nicht funktioniert.

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

arbeitete für mich.

33
bewithaman

Sie können beim Erstellen der Umgebung eine bestimmte Version von Python angeben.
Es wird in virtualenv.py erwähnt

virtualenv --python=python3.5 envname

In einigen Fällen muss dies der vollständige Pfad zur ausführbaren Datei sein:

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

Wie -p funktioniert

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

Ich hatte die gleiche ERROR Nachricht. Die Lösung von tbrisker hat in meinem Fall nicht funktioniert. Stattdessen löste dies das Problem:

$ python3 -m venv .env
11
Aziz Alto

In python3.6 habe ich python3 -m venv myenv versucht, wie in der Dokumentation beschrieben, aber es hat so lange gedauert. Der sehr einfache und schnelle Befehl lautet also python -m venv yourenv. Er hat bei mir unter python3.6 funktioniert.

7
Sujeet Agrahari

Zusätzlich zu den anderen Antworten empfehle ich, zu überprüfen, welche Instanz von virtualenv Sie ausführen:

which virtualenv

Wenn dies etwas in/usr/local/bin auftaucht, ist es möglich - sogar wahrscheinlich -, dass Sie virtualenv installiert haben (möglicherweise mithilfe einer Instanz von easy_tools oder pip), ohne den Paketmanager Ihres Systems zu verwenden (im Falle von OP). Das war mein Problem.

Vor Jahren - als ich noch unwissender war - hatte ich virtualenv installiert und es maskierte das von meinem System bereitgestellte virtualenv.

Nachdem ich dieses alte, kaputte Virtualenv entfernt hatte, verschwanden meine Probleme.

6
sage

Dies ist alles, was Sie benötigen, um eine virtuelle Umgebung in python/python3 auszuführen

Stellen Sie zuerst sicher, dass Sie virtualenv und jetzt haben

Lauf:

virtualenv -p python3 <env name>

Manchmal schlägt der obige Befehl fehl, verwenden Sie einfach diesen Befehl:

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

Aktivieren Sie nun die virtuelle Umgebung:

source <env_name>/bin/activate

Oder:

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

Führen Sie aus (um zu beenden):

deactivate 
6
Kohn1001

Auf dem Mac musste ich Folgendes tun, um es zum Laufen zu bringen.

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

virtualenv --python=/usr/local/bin/python3 <VIRTUAL ENV NAME> Dies fügt den Pfad python für Ihre virtuelle Umgebung hinzu.

3
Hardik Gajjar

Wenn Sie python3 (brew install python3) zusammen mit virtualenv burrito installieren, können Sie mkvirtualenv -p $(which python3) env_name ausführen.

Natürlich weiß ich, dass virtualenv Burrito nur eine Verpackung ist, aber es hat mir im Laufe der Jahre gute Dienste geleistet und einige Lernkurven verkürzt.

3
Antony

Es hat bei mir funktioniert

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

Für diejenigen, die Probleme bei der Arbeit mit Anaconda3 (Python 3) haben.

Du könntest benutzen

conda create -n name_of_your_virtualenv python=python_version 

So aktivieren Sie die Umgebung (Linux, MacOS)

source activate name_of_your_virtualenv

Für Windows

activate name_of_your_virtualenv
2
jkhosla

Für diejenigen unter Ihnen, die pipenv verwenden und eine bestimmte Version installieren möchten:

pipenv install --python 3.6
1
Vlad Bezden

Ich wollte python 2.7.5 als Standardversion unter Centos 7 beibehalten, habe jedoch python 3.6.1 in einer virtuellen Umgebung, die zusammen mit anderen virtuellen Umgebungen in python 2 ausgeführt wird .X

Ich fand den folgenden Link die beste Lösung für die neueste python Version (python 3.6.1) https://www.digitalocean.com/community/tutorial_series/how -zur-Installation-und-Einrichtung-einer-lokalen-Programmierumgebung-für-Python- . Es zeigt die Schritte für verschiedene Plattformen, aber die grundlegenden Schritte sind

  1. Installieren Sie python3.x (falls nicht vorhanden) für Ihre Plattform
  2. Installieren Sie python3.x-devel für Ihre Plattform
  3. Erstellen Sie eine virtuelle Umgebung in python 3.x (zum Beispiel $ python3.6 -m venv virenv_test_p3 /)
  4. Aktivieren Sie die Testumgebung für python 3.x (zum Beispiel source virenv_test_p3/bin/activate)
  5. Installieren Sie die Pakete, die Sie in Ihrer neuen virtuellen Umgebung python 3 verwenden möchten und die unterstützt werden (z. B. pip install Django == 1.11.2).
1

Ich habe alle oben genannten Sachen ausprobiert, es hat immer noch nicht funktioniert. Als Brute Force habe ich einfach die Anaconda neu installiert, die Virtualenv neu installiert ... und es hat funktioniert.

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

In der Windows-Befehlszeile funktionierte Folgendes für mich. Finden Sie zuerst heraus, wo sich Ihre python ausführbaren Dateien befinden:

where python

Dadurch werden die Pfade zu den verschiedenen python.exe auf Ihrem System ausgegeben. Hier waren meine:

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

Bei Python3 befand sich dies für mich im ersten Pfad, sodass ich zum Stammordner der Anwendung gehe, in dem ich einen Ordner für die virtuelle Umgebung erstellen möchte. Dann führe ich Folgendes aus, das den Pfad zu meiner ausführbaren Python3-Datei enthält und meine virtuelle Umgebung "venv" nennt:

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

Aktivieren Sie als Nächstes die virtuelle Umgebung:

call venv\Scripts\activate.bat

Installieren Sie abschließend die Abhängigkeiten für diese virtuelle Umgebung:

pip install -r requirements.txt

Diese Requirements.txt kann manuell ausgefüllt werden, wenn Sie die für Ihre Anwendung in der virtuellen Umgebung erforderlichen Bibliotheken/Module kennen. Wenn die Anwendung in einer anderen Umgebung ausgeführt wurde, können Sie die Abhängigkeiten automatisch erstellen, indem Sie Folgendes ausführen (CD in den Anwendungsordner in der Umgebung, in der sie ausgeführt wird):

pip freeze > requirements.txt

Sobald Sie die Datei requirements.txt haben, die Sie "eingefroren" haben, können Sie die Anforderungen auf einem anderen Computer oder in einer sauberen Umgebung wie folgt installieren (nachdem Sie eine CD in den Anwendungsordner geschrieben haben):

pip install -r requirements.txt

Führen Sie Folgendes aus, um Ihre python -Version in der virtuellen Umgebung anzuzeigen:

python --version

Dann voila ... Sie haben Ihr Python3 in Ihrer virtuellen Umgebung ausgeführt. Ausgabe für mich:

Python 3.7.2
0
Carlo Carandang

Ich habe den gleichen Fehler erhalten, weil es einen Konflikt mit der Installation von miniconda3 gibt. Wenn Sie also "which virtualenv" eingeben und miniconda installiert haben und auf diese Installation zeigen, können Sie es entweder entfernen (wenn Sie mir ähnlich sind und nicht umgezogen sind) dazu noch) oder ändern Sie Ihre Umgebungsvariable, um auf die gewünschte Installation zu verweisen.

0
PrincessPea