Wie konfiguriere ich benutzerdefiniertes PYTHONPATH mit VM und PyCharm?


85

Ich verwende IntelliJ mit dem Python-Plugin und der Remote Interpreter-Funktion , um mit meiner Vagrant-VM zu kommunizieren. Der Remote-Interpreter wird so eingerichtet, dass er den Interpreter meiner VM verwendet. Ich verwende jedoch einen benutzerdefinierten PYTHONPATH in meiner VM und möchte, dass IntelliJ diesen Pfad erkennt und die Module bei der Entwicklung in diesen Pfad einbezieht.

Wie konfiguriere ich den Remote-Interpreter von IntelliJ / PyCharm für die Verwendung eines benutzerdefinierten PYTHONPATH auf der VM?


Ich habe genau dieses Problem, außer dass ich viele Projekte habe, die einem gemeinsamen Schema folgen, und im Moment (in Emacs) habe ich alles dynamisch eingerichtet. Die projektbezogene Einrichtung in Pycharm scheint eine Belastung zu sein.
AdamC

Antworten:


124

Für PyCharm 5 (oder 2016.1) können Sie:

  1. Wählen Sie Einstellungen> Projektinterpreter
  2. Rechts neben der Dolmetscherauswahl befindet sich eine Schaltfläche "...". Klicken Sie darauf
  3. Wählen Sie "mehr ..."
  4. Öffnen Sie ein neues Fenster "Projektinterpreter"
  5. Wählen Sie die Schaltfläche ganz rechts (mit dem Namen "Pfade für den ausgewählten Interpreter anzeigen").
  6. Öffnen Sie ein Fenster "Interpreter Paths"
  7. Klicken Sie auf das "+" - Button> wählen Sie das gewünschte PYTHONPATH-Verzeichnis (den Ordner, der Python-Module enthält) und klicken Sie auf OK
  8. Erledigt! Geniesse es!

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein


Das mache ich in meinem Projekt so nervig. Ich habe Projekt A, Projekt gemeinsam, Projekttest. Um Unittests unter Projekttest auszuführen, habe ich Projektabhängigkeiten hinzugefügt, sodass der Projekttest von Projekt A und Common abhängt. Ich muss jedoch manuell Ordner von A und Common in den PYTHONPATH einfügen.
thinkanotherone

Dadurch wird das Verzeichnis zum globalen PYTHONPATH für diesen Interpreter hinzugefügt, oder? Nicht nur das Projekt?
Ray

@ Ray ja, scheint die globalen Interpreter-Einstellungen zu ändern. Wir können jedoch unterschiedliche virtuelle Umgebungen für unterschiedliche Projekte verwenden und unterschiedliche PYTHONPATH für sie festlegen.
Phil

Beachten Sie, dass Sie zuerst den Interpreter als Interpreter Ihres Projekts
festlegen müssen

Unter OSX zeigt Cmd + Umschalt + Punkt versteckte Ordner im Auswahldialog (z. B. / usr) an, da es anscheinend keine Möglichkeit gibt, nur den Pfad einzugeben.
Flash

83

Anweisungen zum Bearbeiten Ihres PYTHONPATH oder zum Beheben von Problemen mit der Importauflösung für die Codeinspektion lauten wie folgt:

  1. Öffnen Sie die Einstellungen (Auf einem Mac ist die Tastenkombination ⌘,).

So gelangen Sie über das Menü zu den Einstellungen

  1. Suchen Sie Project Structurein der Seitenleiste links unten nachProject: Your Project Name

  2. Hinzufügen oder Entfernen von Modulen in der rechten Seitenleiste

Projektstruktureinstellungen in Pycharm 4.5

BEARBEITEN : Ich habe diesen Screenshot für PyCharm 4.5 aktualisiert


Gilt das noch? Ich habe angeblich den neuesten PyCharm-Profi, aber mir fehlen viele dieser Kategorien. einschließlich Projektstruktur! Aber danke, dass du das gepostet hast !!!
R Claven

1
Hallo, ich habe den Screenshot für PyCharm 4.5, die neueste Version, aktualisiert. Es sieht so aus, als hätten sie die Einstellungen in der Seitenleiste neu organisiert.
Björn

Eigentlich schulde ich dir ein MASSIVES Dankeschön. Ich habe mit den "Standardeinstellungen" anstelle der Projekteinstellungen herumgespielt. Ihre Antwort hier hat mir geholfen, dies zu realisieren, und dann habe ich viele Unstimmigkeiten behoben und es hat funktioniert. VIELEN DANK!
R Claven

Gibt es eine Möglichkeit, dies global zu tun? Das Hinzufügen von /Library/Python/2.7/site-packages und /usr/local/lib/python2.7/site-packages zu jedem Projekt, das ich öffne, stinkt.
Jeremyjjbrown

Ja @jeremyjjbrown, ich glaube, Sie können dies tun, indem Sie auf "Projektinterpreter" klicken und den Interpreterpfad auswählen, der die gewünschten Site-Pakete enthält. Diese Frage beantwortete lediglich die Bereitstellung projektspezifischer Pakete für ihre Projekte. Sie können sogar eine require.txt verwenden, um alle Ihre deps-Projekte in pycharm hinzuzufügen.
Björn

16

Für mich war die Lösung zu gehen

Run > Edit Configuration > Defaults > Python

dann verwalten Sie die

  • "Fügen Sie PYTHONPATH Inhaltswurzeln hinzu" und
  • "Quellwurzel zu PYTHONPATH hinzufügen"

Kontrollkästchen sowie das Feld "Arbeitsverzeichnis" festlegen.

Wenn Sie Ihre eigenen Run / Debug-Konfigurationen eingerichtet haben, möchten Sie möglicherweise zu gehen

Run > Edit Configuration > Python > [Whatever you called your config]

und dort bearbeiten.

Mein Problem war, dass ich mein gesamtes Repository in mein PyCharm 2016.2-Projekt aufnehmen wollte, aber nur ein Unterordner war der eigentliche Python-Quellcode-Stamm. Ich habe es als "Quellstamm" hinzugefügt, indem ich mit der rechten Maustaste auf den Ordner geklickt habe

Mark directory as > Source Root

Deaktivieren Sie dann "Hinzufügen von Inhaltswurzeln zu PYTHONPATH" und aktivieren Sie "Quellstamm zu PYTHONPATH hinzufügen" im Menü "Ausführen / Debuggen". Ich habe dann den Ordnerpfad überprüft, indem ich Folgendes getan habe:

import sys
logger.info(sys.path)

Dies gab aus:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

Ohne das Update hieß es jedoch:

[
    '/usr/local/my_project_root/my_sources_root', 
    '/usr/local/my_project_root',                   <-- NOT WANTED
    '/usr/lib/python3.4', 
    '/usr/lib/python3.4/plat-x86_64-linux-gnu', 
    '/usr/lib/python3.4/lib-dynload', 
    '/usr/local/lib/python3.4/dist-packages', 
    '/usr/lib/python3/dist-packages'
]

Was bedeutete, dass ich den Projektstammordner enthalten hatte. Dies hat den Weg für mich durcheinander gebracht.


Vielen Dank, ich bin kein Python-Experte und habe mich immer gefragt, wie ich einen Blick darauf werfen kann, welche Importpfade ich erreichen kann! (dieser sys.pathTeil)
Rastikan

Dies ist nicht ideal, da jede Laufkonfiguration aktualisiert werden muss .
Javadba

@javadba Wenn Sie möchten, dass es für alle Konfigurationen funktioniert, gehen Sie Run > Edit Configuration > Templates > Pythonstattdessen zu.
André C. Andersen

@ AndréC.Andersen thx! Ich noch nie sah auf Vorlagen vor.
Javadba

13

Dies wurde mit PyCharm Community 2019.1 durchgeführt

  1. Gehen Sie zu Projekteinstellungen die Einstellungen
  2. Gehen Sie zur Projektstruktur und klicken Sie mit der rechten Maustaste auf das Verzeichnis, das Sie hinzufügen möchten, und klicken Sie auf "Quellen". Projektstruktur - Quellen hinzufügen

Dies sollte das Verzeichnis zu Ihrem Pythonpfad hinzufügen Projektstruktur - nach dem Hinzufügen von Quellen


3

Ein Update auf die richtige Antwort phil zur Verfügung gestellt, für die neueren Versionen von PyCharm (zB 2019,2).

Gehen Sie zu Datei> Einstellungen, suchen Sie Ihr Projekt und wählen Sie dann Projektinterpreter . Klicken Sie nun auf die Schaltfläche mit einem Zahnrad rechts neben dem ausgewählten Projektinterpreter (früher ein ... ).

Geben Sie hier die Bildbeschreibung ein

Wählen Sie im Dropdown-Menü Alle anzeigen ... und klicken Sie im daraufhin angezeigten Dialogfeld auf das Symbol mit einem Ordner und zwei Unterordnern.

Geben Sie hier die Bildbeschreibung ein

Es wird ein Dialogfeld mit den aktuellen Interpreterpfaden angezeigt. Klicken Sie auf + , um einen weiteren hinzuzufügen.


VIELEN DANK!!! Ein Kollege und ich haben darum gekämpft, seine Umgebung so einzurichten, dass sie meiner entspricht, und ich kann mich nicht erinnern, diese Schritte ausgeführt zu haben, aber es gibt einen wichtigen Pfad, den ich habe (der sogar "vom Benutzer hinzugefügt" sagt).
Drarok

2

Nach meiner Erfahrung ist die Verwendung einer PYTHONPATH-Variablen normalerweise der falsche Ansatz, da sie mit VENV unter Windows nicht gut funktioniert. PYTHON bereitet beim Laden den Pfad vor, indem PYTHONPATH dem Pfad vorangestellt wird. Dies kann dazu führen, dass Ihr sorgfältig vorbereiteter Venv vorzugsweise globale Site-Pakete abruft.

Anstatt den PYTHON-Pfad zu verwenden, fügen Sie eine pythonpath.pth-Datei in das entsprechende Site-Packages-Verzeichnis ein (achten Sie jedoch darauf, dass benutzerdefinierte Pythons gelegentlich an verschiedenen Speicherorten nach ihnen suchen, z jede virtuelle Umgebung. Dies verhält sich wie ein PYTHONPATH, nur dass es spezifisch für die Python-Installation ist, sodass Sie für jede Python-Installation / -Umgebung eine separate haben können. Pycharm lässt sich stark in VENV integrieren, wenn Sie nur die Python des VENV als Python-Installation verwenden.

Siehe zB diese SO-Frage für weitere Details zu .pth-Dateien ....



0

Sie können dies tun, indem Sie zum Dialogfeld des Dolmetschers gehen. Klicken Sie auf den von Ihnen verwendeten Interpreter. Darunter sollten zwei Registerkarten angezeigt werden, eine mit dem Namen "Pakete" und die andere mit dem Namen "Pfad".

Klicken Sie auf Pfad und fügen Sie Ihren VM-Pfad hinzu.


Wenn ich auf den Remote-Interpreter klicke und einen Klassenpfad hinzufüge, beschwert er sich, wenn ich ein Remote-Verzeichnis (wie /home/vagrant/mydir) angebe . Muss ich dem Pfad etwas voranstellen? Meine Benutzeroberfläche ist etwas anders, da ich IntelliJ mit dem Python-Plugin verwende und nicht PyCharm, wenn das hilft.
Baalexander

1
Nun, Sie können einfach zum SSH-Interpreter gehen und das Zeug aus der Vagrant-Datei laden, es ist dort eine Option.
Spiele Brainiac


0

In Intellij v2017.2 können Sie gehen zu:

run > edit configurations > click ... next to the field 'Environment variables' > click the green + sign

Name = PYTHONPATH

value = your_python_path

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.