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?
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.
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
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.
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""
Basierend auf den Antworten von Peter und Experimenten habe ich eine gute "allgemeine Lösung" gefunden, die Folgendes löst:
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
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.
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
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.
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
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
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>
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 PATH
vor 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.
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
Auf dem Mac ist es PyCharm -> Einstellungen ... -> Tools -> Terminal -> Aktivieren Sie virtualenv . Dies sollte standardmäßig aktiviert sein.
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 ~/.bashrcsource ~/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.
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$
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>
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:
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.
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.
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