it-swarm.com.de

Wie aktiviere ich ein Virtualenv im PyCharm-Terminal?

Ich habe PyCharm eingerichtet, meine virtualenv erstellt (entweder über den Befehl virtual env oder direkt in PyCharm) und diese Umgebung als Interpreter aktiviert. Alles funktioniert gut.

Wenn ich jedoch ein Terminal mit "Tools, Open Terminal" öffne, lautet die Shell-Eingabeaufforderung nicht die virtuelle Umgebung; Ich muss noch source ~/envs/someenv/bin/activate in diesem Terminal verwenden, um es zu aktivieren.

Eine andere Methode besteht darin, die Umgebung in einer Shell zu aktivieren und PyCharm in dieser Umgebung auszuführen. Das ist "funktionsfähig", aber ziemlich hässlich. Das bedeutet, dass ich große Probleme habe, wenn ich die Umgebung oder Projekte von PyCharm wechsle.

Gibt es eine andere, viel einfachere Möglichkeit, die virtuelle Umgebung durch "Tools, Open Terminal" automatisch aktivieren zu lassen?

88
Chris Cogdon

Bearbeiten:

Laut https://www.jetbrains.com/pycharm/whatsnew/#v2016-3-venv-in-terminal hat PyCharm 2016.3 (veröffentlicht im November 2016) virutalenv Unterstützung für Terminals aus der Box

Auto virtualenv wird für bash, zsh, fish und Windows cmd unterstützt. Sie können Ihre Shell-Einstellungen in Einstellungen (Einstellungen) | anpassen Werkzeuge | Terminal.


alte Methode:

Erstellen Sie eine Datei .pycharmrc in Ihrem Heimatordner mit folgendem Inhalt

source ~/.bashrc
source ~/pycharmvenv/bin/activate

Verwenden Sie Ihren Virtualenv-Pfad als letzten Parameter.

Legen Sie dann den Shell-Einstellungen-> Projekteinstellungen-> Shell-Pfad auf fest

/bin/bash --rcfile ~/.pycharmrc
87
Peter Gibson

Windows-Benutzer können bei Verwendung von PyCharm und einer virtuellen Umgebung unter Windows den Parameter/k für cmd.exe verwenden, um die virtuelle Umgebung automatisch festzulegen.

Gehen Sie zu Einstellungen, Terminal, Standard-Shell und fügen Sie /K <path-to-your-activate.bat> hinzu.

Ich habe nicht den Ruf, die frühere Antwort zu kommentieren, also diese korrigierte Version zu veröffentlichen. Das spart wirklich viel Zeit. 

Update:

Hinweis: Pycharm unterstützt jetzt virtuelle Umgebungen direkt und es scheint gut für mich zu funktionieren - daher ist diese Problemumgehung nicht mehr erforderlich. 

37
PrivateUser22

Für Windows-Benutzer: Wenn Sie PyCharm in einer virtuellen Umgebung verwenden, können Sie den Parameter /K in cmd.exe verwenden, um die virtuelle Umgebung automatisch festzulegen.

PyCharm 3 oder 4: Settings, Terminal, Default Shell und fügen Sie /K <path-to-your-activate.bat> hinzu.

PyCharm 5: Settings, Tools, Terminal und fügen Sie /K <path-to-your-activate.bat> zu Shell path hinzu.

PyCharm 2016.1 oder 2016.2: Settings, Tools, Terminal und fügen Sie ""/K <path-to-your-activate.bat>"" zu Shell path hinzu und fügen Sie hinzu (die Anführungszeichen beachten). Fügen Sie auch Anführungszeichen um cmd.exe hinzu.

"cmd.exe" /k ""C:\mypath\my-venv\Scripts\activate.bat""

36
SaeX

Basierend auf den Antworten von Peter und Experimenten habe ich eine gute "allgemeine Lösung" gefunden, die Folgendes löst:

  • Stellt das Verhalten einer Login-Shell wieder her. PyCharm führt normalerweise eine Login-Shell aus, aber --rcfile hat dies verhindert. Das Skript verwendet weiterhin --rcfile, versucht jedoch das INVOCATION-Verhalten einer Login-Shell zu emulieren.
  • Es entfällt die Notwendigkeit, für jede Umgebung eine RC-Datei zu erstellen
  • Die Aktualisierung der Projekteinstellungen entfällt, wenn Sie die Umgebung ändern.

Legen Sie dieses Skript irgendwo in einem bin-Verzeichnis ab. Z.B. ~/bin/pycharmactivate

if [ -r "/etc/profile" ] ; then . /etc/profile ; fi
if [ -r "~/.bash_profile" ] ; then
    . ~/.bash_profile
Elif [ -r "~/.bash_login" ] ; then
    . ~/.bash_login
Elif [ -r "~/.profile" ] ; then
    . ~/.profile
fi
ACTIVATERC=`cat .idea/workspace.xml | Perl -n -e 'print "\$1/bin/activate" if m:option name="SDK_HOME" value="\\\$USER_HOME\\\$(.*)/bin/python":'`
if [ -n "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; else echo "Could not find virtualenv from PyCharm" ; fi

Setzen Sie dann den Shell-Pfad von PyCharm auf:

/bin/bash --rcfile ~/bin/pycharmactivate
7
Chris Cogdon

In PyCharm 4 sind jetzt Virtualenvs in die IDE integriert. Bei der Auswahl Ihres Projektinterpreters können Sie eine virtuelleEnergie erstellen, hinzufügen oder auswählen. Sie haben eine "Python-Konsole" hinzugefügt, die im konfigurierten Projektinterpreter ausgeführt wird.

Mehr Infos hier.

6
pferate

Danke Chris, dein Skript hat für einige Projekte funktioniert, aber nicht alle auf meinem Rechner. Hier ist ein Skript, das ich geschrieben habe, und ich hoffe, dass es jemand nützlich findet. 

#Stored in ~/.pycharmrc 

ACTIVATERC=$(python -c 'import re
import os
from glob import glob

try:
  #sets Current Working Directory to _the_projects .idea folder
  os.chdir(os.getcwd()+"/.idea") 

  #gets every file in the cwd and sets _the_projects iml file
  for file in glob("*"): 
    if re.match("(.*).iml", file):
      project_iml_file = file

  #gets _the_virtual_env for _the_project
  for line in open(project_iml_file):
    env_name = re.findall("~/(.*)\" jdkType", line.strip())
    # created or changed a virtual_env after project creation? this will be true
    if env_name:
      print env_name[0] + "/bin/activate"
      break

    inherited = re.findall("type=\"inheritedJdk\"", line.strip())
    # set a virtual_env during project creation? this will be true
    if inherited:
      break

  # find _the_virtual_env in misc.xml
  if inherited:
    for line in open("misc.xml").readlines():
      env_at_project_creation = re.findall("\~/(.*)\" project-jdk", line.strip())
      if env_at_project_creation:
        print env_at_project_creation[0] + "/bin/activate"
        break
finally:
  pass
')

if [ "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; fi
6
user1928626

Wenn Sie die Windows-Version verwenden, ist dies ziemlich einfach ... Wenn Sie bereits über eine virtuelle Umgebung verfügen, navigieren Sie zu ihrem Ordner und suchen nach activate.bat im Ordner Scripts. Kopieren Sie den Pfad full und fügen Sie ihn in pycharms Terminal ein. Drücken Sie dann Enter und fertig!

Wenn Sie eine neue virtuelle Umgebung erstellen müssen:

Gehen Sie zu Dateien> Einstellungen, suchen Sie nach project interpreter, öffnen Sie ihn, klicken Sie auf die Zahnradschaltfläche und erstellen Sie die Umgebung, wo Sie möchten, und folgen Sie dem ersten Absatz.

 The Gear!

3
AmiNadimi

Ich habe gerade ein Skript namens pycharmactivate zu meinem Home-Verzeichnis hinzugefügt. Setzen Sie den Wert für PyCharm (4.0.1) File> Settings> Tools> Terminal> Shell-Pfad zu/bin/bash --rcfile ~/pycharmactivate . Möglicherweise ist dies nicht die beste Lösung, wenn Sie unterschiedliche Projekt- und Virtualenv-Verzeichnisse/Namen haben Für mich geht das. Dieses Skript enthält die folgenden 3 Zeilen und geht davon aus, dass Ihre virtualenv denselben Namen wie Ihr Projektverzeichnis hat.

source ~/.bashrc
projectdir=${PWD##*/}
source ~/.virtualenvs/$projectdir/bin/activate
2
user4304103

Nach der Antwort von Peter folgt hier die Mac-Version der .pycharmrc-Datei:

source /etc/profile
source ~/.bash_profile
source  <venv_dir>/bin/activate

Henne

2

Ich habe mir alle Antworten oben angesehen, aber keine davon ist für mich elegant genug. In Pycharm 2017.1.3 (auf meinem Computer) ist es am einfachsten, Settings->Tools->Terminal zu öffnen und die Optionen Shell integration und Activate virtualenv zu überprüfen.

 image

2
WQY

dies ist, was ich mache: Erstellen Sie eine Datei enable_env.bat (Windows, vielleicht .sh in Linux) im Quellcode-Ordner

/env_yourenvlocate/scripts/activate.bat

und eine weitere Datei disableivate_env.bat:

/env_yourenvlocate/scripts/deactivate.bat

jedes Mal, wenn Sie das Terminalfenster öffnen, führen Sie einfach die bat-Datei aus, um die virtualenv zu aktivieren/deaktivieren. Sie bleiben im Quelltextpfad.

E:\Projects\Django_study\src>active_env.bat

E:\Projects\Django_study\src>../env_Django_study/scripts/activate.bat
(env_Django_study) E:\Projects\Django_study\src>



(env_Django_study) E:\Projects\Django_study\src>deactive_env.bat

(env_Django_study)E:\Projects\Django_study\src>../env_Django_study/scripts/deactivate.bat
E:\Projects\Django_study\src>
1
phiree

Ich habe eine Lösung, die auf meinem Windows 7-Computer funktioniert.

Ich glaube, PyCharms Terminal ist das Ergebnis von cmd.exe, das die Windows-Variable PATH lädt und die Version von Python verwendet, die es zuerst in dieser PATH findet. Um diese Variable zu bearbeiten, klicken Sie mit der rechten Maustaste auf Arbeitsplatz -> Eigenschaften - -> Erweiterte Systemeinstellungen -> Registerkarte Erweitert -> Schaltfläche Umgebungsvariablen ... . Wählen Sie im Abschnitt Systemvariablen die Variable PATH aus und bearbeiten Sie sie.

Hier ist der relevante Teil meiner PATHvor Bearbeitung:

C:\Python27 \;
C:\Python27\Lib\site-packages\pip \;
C:\Python27\Scripts;
C:\Python27\Lib\site-packages\Django\bin;

... und nachPATH bearbeiten (jetzt nur noch 3 Zeilen):

C: [Projektpfad]\virtualenv-Py2.7_Dj1.7\Lib\site-packages\pip;
C: [Projektpfad]\virtualenvs\virtualenv-Py2.7_Dj1.7\Scripts;
C: [Projektpfad]\virtualenvs\virtualenv-Py2.7_Dj1.7\Lib\site-packages\Django\bin;

Um dies zu testen, öffnen Sie ein neues Windows-Terminal ( Starten Sie -> geben Sie cmd ein und drücken Sie Enter) und prüfen Sie, ob Ihre virtuelle Umgebung verwendet wird. Wenn das funktioniert, PyCharm neu starten und dann im PyCharm-Terminal testen.

1
user2684827

Bei Pycharm 2016.1.4v und höher sollten Sie "default path" /K "<path-to-your-activate.bat>".__ verwenden. Vergessen Sie nicht die Anführungszeichen

1
Koblikov Mihail

Auf dem Mac ist es PyCharm -> Einstellungen ... -> Tools -> Terminal -> Aktivieren Sie virtualenv . Dies sollte standardmäßig aktiviert sein.

1
M3RS

Lösung für WSL (Ubuntu unter Windows)

Wenn Sie WSL (Ubuntu unter Windows) verwenden, können Sie bash auch als Terminal in pycharm öffnen und eine Linux-Virtualenv aktivieren.

Verwenden Sie eine .pycharmrc-Datei, wie in der Antwort von Peter Gibson beschrieben. Fügen Sie die .pycharmrc-Datei mit folgendem Inhalt zu Ihrem Home-Verzeichnis hinzu:

source ~/.bashrc
source ~/path_to_virtualenv/bin/activate

Fügen Sie in Pycharm File> Settings> Tools> Terminal den folgenden 'Shell-Pfad' hinzu:

"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"


Projektspezifische Virtualisierung

Der Pfad zu Ihrer Virtualenv in .pycharmrc muss nicht absolut sein. Sie können ein projektspezifisches Virtualenv festlegen, indem Sie einen relativen Pfad aus Ihrem Projektverzeichnis festlegen. __ Mein Virtualenv befindet sich immer in einem Ordner 'venv' unter meinem Projektverzeichnis, sodass meine .pycharmrc-Datei folgendermaßen aussieht:

 source ~/.bashrc 
source ~/pycharmvenv/bin/aktivieren  #absoluter Pfad 
 Quelle ./venv/bin/activate #relativer Pfad 


BONUS: ssh-Tunnel automatisch öffnen, um virtualenv als Projektinterpreter zu verbinden

Fügen Sie Ihrer .pycharmrc-Datei Folgendes hinzu:

if [ $(ps -aux | grep -c 'ssh') -lt 2 ]; then
    Sudo service ssh start 
fi

Dies prüft, ob ein SSH-Tunnel bereits geöffnet ist, und öffnet ansonsten einen anderen .. .. Fügen Sie unter Datei -> Einstellungen -> Projekt -> Projektinterpreter in Pycharm einen neuen Ferninterpreter mit folgender Konfiguration hinzu:

+ -------------------------- + ---------------------- ----------- + ------- + ---- + 
 | Name: | <Name des Dolmetschers> | | | 
 | Wählen Sie | 'SSH-Berechtigungsnachweise' | | | 
 | Gastgeber: | 127.0.0.1 | Port: | 22 | 
 | Benutzer: | <Linux-Benutzername> | | | 
 | Auth-Typ: | 'Passwort' | | | 
 | Passwort: | <Linux-Passwort> | | | 
 | Python-Interpreterpfad: | <Linux-Pfad zu Ihrer Virtualenv> | | | 
 | Python-Helferpfad: | <Automatisch einstellen> | | | 
 + -------------------------- + ------------------ --------------- + ------- + ---- +

Wenn Sie nun Ihr Projekt öffnen, startet Ihre Bash automatisch in Ihrer Virtualenv, öffnet einen SSH-Tunnel und pycharm verbindet die Virtualenv als Remote-Interpreter.

warning: Das letzte Update in Windows startet automatisch einen SshBroker- und SshProxy-Dienst beim Start. Diese blockieren den SSH-Tunnel von Linux zu Fenstern. Sie können diese Dienste im Task-Manager -> Dienste anhalten, woraufhin alles wieder funktioniert.

0
Robbe

Eine andere Alternative ist die Verwendung von virtualenvwrapper zur Verwaltung Ihrer virtuellen Umgebungen. Es scheint, dass pycharm, sobald das virtualenvwrapper script aktiviert ist , dies verwenden kann und dann der einfache workon-Befehl von der pycharm-Konsole aus verfügbar ist und Ihnen die verfügbaren virtuellen Umgebungen präsentiert:

[email protected]:~/Development/Django-tutorial$ workon
Django-tutorial
FlaskHF
SQLAlchemy
themarkdownapp
[email protected]:~/Development/Django-tutorial$ workon Django-tutorial
(Django-tutorial)[email protected]:~/Development/Django-tutorial$ 
0
ksaylor11

Eine Option haben Sie, wenn Sie das Terminal eingeben> Ausführen> Debuggen> Konfigurationen bearbeiten  enter image description here

 enter image description here

wählen Sie die entsprechende Umgebung aus ....... Auch beim Erstellen eines neuen Projekts werden Sie aufgefordert, diesen Speicherort zu konfigurieren. 

0
johndpope

PyCharm 4.5.4 

Erstellen Sie eine Datei .pycharmrc in Ihrem Home-Ordner mit der folgenden Inhalt

source ~/.bashrc
source ~/pycharmvenv/bin/activate

Verwenden Sie Ihren Virtualenv-Pfad als letzten Parameter.

Legen Sie dann den Shell-Einstellungen-> Projekteinstellungen-> Shell-Pfad auf fest

/bin/bash --rcfile ~/.pycharmrc

Ich weiß nicht warum, aber es funktioniert nicht für mich. PyCharm druckt einen Fehler.

cmd.exe /K "<path-to-your-activate.bat>" Es funktioniert, erstellt jedoch für jedes Projekt dieselbe virtuelleEnv und auch wenn dies nicht erforderlich ist.

Diese Quittung funktioniert! Der String /env_yourenvlocate/scripts/activate.bat muss jedoch Anführungszeichen enthalten, wie zB "Full_path_to_your_env_locate\scripts\activate.bat"!

Das Deaktivieren der Virtualenv ist sehr einfach - tippen Sie in das Terminal 'Deaktivieren'

(virt_env) D:\Projects\src>deactivate
D:\Projects\src>
0
Oleg Novikov

Diese Methode sollte mit beliebigen virtuellen Umgebungen pro Projekt funktionieren. Sie macht in Ihrer Umgebung keine Annahmen, da sie von Ihnen erstellte Hooks verwendet.

Du schreibst:

  • Ein globales Skript, das den Hook aufruft
  • Ein Hook-Skript pro PyCharm-Projekt (nicht obligatorisch)

Angenommen, die aktuelle neueste PyCharm (Community 2016.1) erlaubt keine Terminaleinstellungen pro Projekt Start mit dem Skript, das den projektspezifischen Hook aufruft. Dies ist mein ~/.pycharmrc:

if [ -r ".pycharm/term-activate" ]; then
   echo "Terminal activation hook detected."
   echo "Loading Bash profile..."
   source ~/.bash_profile
   echo "Activating terminal hook..."
   source ".pycharm/term-activate"
   source activate $PYCHARM_VENV
fi

Wenn Sie etwas anderes als Bash verwenden, rufen Sie, falls gewünscht, Ihr eigenes .bash_profile-Äquivalent auf.

Stellen Sie nun PyCharm "Tools -> Terminal -> Shell Path" ein, um dieses Skript aufzurufen, z. B. /bin/bash --rcfile ~/.pycharmrc

Schließlich muss für jedes PyCharm-Projekt eine bestimmte virtuelle Umgebung aktiviert werden. Erstellen Sie eine Datei im PyCharm-Projektstamm .pycharm/term-activate. Dies ist Ihr Hook und es wird einfach der Name der gewünschten virtuellen Umgebung für Ihr PyCharm-Projekt definiert:

export PYCHARM_VENV=<your-virtual-env-name>

Sie können Ihre Hooks natürlich um alles erweitern, was Sie in der Terminalumgebung Ihres speziellen PyCharm-Projekts nützlich finden.

0
tilusnet

Ich wollte für jedes Projekt eine eigene virtuelle Umgebung, und es lag mir nicht viel daran, zusätzliche Dateien zur Verfügung zu haben, die dies erleichtern. Eine Lösung, die Sie nur einmal tun müssen und für alle Projekte geeignet sind, besteht darin, Ihrem .bashrc oder .bash_profile Folgendes hinzuzufügen:

if [ -d "./venv" ]; then
    source ./venv/bin/activate
fi

Dadurch wird geprüft, ob es eine virtuelle Umgebung gibt, in der das Terminal geöffnet wird, und wenn dies aktiviert ist (und natürlich können auch andere relative Pfade verwendet werden). Die Terminaleinstellungen von PyCharm können als Standardeinstellung beibehalten werden.

0
golmschenk

Stellen Sie für virtuelle Conda-Umgebungen unter Windows sicher, dass Ihre Batchdatei NICHT activate.bat heißt, da dies zu einem Konflikt mit dem Befehl conda activate führt, was zu einem rekursiven Aufruf der Batchdatei führt.

Was für mich funktioniert, ist folgender Shell-Pfad: 

"cmd.exe" /k ""C:\FullPathToYourProject\activate-env.bat""

Und in der Datei enable-env.bat:

call activate myenvname
0
Erwin Mayer