Ich habe zwei reine python -Projekte in PyCharm 3.4.1 Professional Edition. Das erste, nennen wir es p
(wie das Paket), ist als setuptools-Paket strukturiert (d. H. Mit setup.py, allen Anforderungen usw., es wird jedoch nicht in pypi oder ein anderes Online-Repository hochgeladen). Das zweite, nennen wir es s
(wie Skript), ist nur ein python Skript zusammen mit zwei Modulen.
Projekt s
ist (in PyCharm) für die Verwendung einer dedizierten virtuellen Umgebung konfiguriert. Nennen wir es venv
.
Das Problem, das ich habe, ist das folgende: Wenn ich das Projekt (Paket) p
in venv
wie folgt installiere:
$ source /path/to/venv/bin/activate
(venv)$ cd /path/to/p
(venv)$ python3 setup.py develop
in PyCharm in Projekt s
sind import p
- Anweisungen mit der Meldung fehlerhaft Kein Modul mit dem Namen p . Wenn ich das Skript jedoch in s
ausführe, ist alles in Ordnung. Das einzige Problem ist, dass der PyCharm IDE sich beschwert, das Modul nicht finden zu können. Ich kann damit leben, aber es ist sehr ärgerlich ...
Warum passiert das? Handelt es sich um eine PyCharm- oder Verpackungssache? Siehe NACHRICHTEN unten.
Das Projekt/Paket p
hat folgende Struktur:
p/
|
+- p/
| |
| +- __init__.py
| +- other subpackages, modules, etc.
+- setup.py
+- README, DESCRIPTION, setup.cfg, etc.
Wenn ich das PyCharm-Projekt p
so konfiguriere, dass es in einer eigenen virtuellen Umgebung lebt und es dort im Entwicklungsmodus installiert, funktioniert alles einwandfrei.
NACHRICHTEN
Dieses Problem ist in PyCharm 5.0.4 immer noch vorhanden. Ich habe es jedoch irgendwie geschafft, es zu lösen.
Aus irgendeinem Grund musste ich ein anderes Paket von pypi installieren. Ich habe es durch PyCharm gemacht, indem ich zu Datei -> Einstellungen -> Projekt: -> Projektinterpreter gegangen bin, dort auf das grüne +
Geklickt habe, das Paket gefunden habe und auf die Schaltfläche Paket installieren geklickt habe. Nach der Installation wird das von python3 setup.py develop
Installierte Paket von PyCharm gut erkannt. Offensichtlich bestand das Problem darin, dass PyCharm nicht über einen Cache verfügte, der mit der Realität synchronisiert war.
Die neue Frage lautet also: Kann PyCharm angewiesen werden, seine Caches in Bezug auf die verwendete python -Umgebung zu aktualisieren?
Ab Pycharm 2016.1.4 (Professional Edition) scheint es so zu sein, dass Pycharm beim Öffnen eines anderen Projekts (z. B. über Open Recent) und beim anschließenden Öffnen des ursprünglichen Projekts die installierten Pakete neu indiziert und somit die von Entwicklern installierten Pakete erkennt.
Das ist genug für mich.
Im Projektfenster muss das Verzeichnis mit p als Quelle markiert werden. Verfügbar unter: Rechtsklick -> "Verzeichnis markieren als" -> "Quellenstamm".
Hinweis: Mit dieser Einstellung wird PYTHONPATH während der Ausführung aus dem Ausführungsmenü hinzugefügt, wenn das entsprechende Kontrollkästchen für die Option in "Konfigurationen bearbeiten" (Standardeinstellung) aktiviert ist.
Ich hatte eine verdammte Zeit, PyCharm dazu zu bringen, eine Klasse in einem Modul zu erkennen, das ich gerade geschrieben hatte.
Das Problem ist, dass PyCharm anscheinend standardmäßig keine Modulklassenpfade importiert, wofür zwei separate Fixes erforderlich sind.
Klicken Sie mit der rechten Maustaste auf den Modulnamen und markieren Sie ihn als "Quelle":
Aus irgendeinem Grund werden in PyCharm standardmäßig keine als "Sources Root" gekennzeichneten Verzeichnisse zum Python Pfad hinzugefügt. Beheben Sie dies, indem Sie dies aktivieren.
Beachten Sie das "Startskript" im obigen Bild. Ich gehe davon aus, dass das manuelle Hinzufügen dieser Zeilen zu Ihrem Python= - Skript das gleiche Ergebnis erzielen würde.
Lösung
Klicken Sie in der Dropdown-Liste auf Alle anzeigen .... Die verfügbaren Dolmetscher werden im Dialogfeld Projektdolmetscher angezeigt.
Wählen Sie den gewünschten Dolmetscher.
Klicken Sie in der Symbolleiste des Dialogfelds Projektinterpreter auf das Schaltflächensymbol , um Pfade anzuzeigen (letzte Option). Die vorhandenen Pfade des ausgewählten Interpreters werden im Dialogfeld Interpreterpfade angezeigt.
voila !! Du bist startklar.
Erklärung
Jedes Projekt bezieht sich auf einen Interpreter, den Sie unter settings-> project interpreter finden. Jetzt verwendet dieser Interpreter eine Reihe von Pfaden, um nach einer Bibliothek zu suchen. Standardmäßig enthält es Site-Pakete und eine Reihe anderer Pfade.
Nun, da Sie pip develop -e oder python setup.py develop wird ein dynamischer Link erstellt, der auf das Repository Ihres Pakets verweist, anstatt auf eine Paketinstallation im Verzeichnis site-packages. Der Quellpfad unseres Pakets ist also nicht hier. Wir müssen unseren Quellpfad zu den Pfaden des Interpreters hinzufügen, damit es funktioniert
Ref:
Art der Problemumgehung, die für mich funktioniert hat:
Öffnen Sie beide Projekte in PyCharm im selben Fenster (Arbeitsbereich). Öffnen Sie nun das Einstellungsfenster und wählen Sie unter "Projekt -> Projektabhängigkeiten" aus, welches Projekt s
vom Projekt p
abhängt. Importe und Autovervollständigung funktionieren jetzt einwandfrei.
Ich hatte nur das gleiche Problem wie deins.
Anscheinend kann pycharm das von setup.py direkt installierte Modul nicht erkennen, aber das von pip installierte Modul. Schließlich benutze ich pip install src_path, aber ich muss pip install jedes Mal, wenn ich den Quellcode ändere.
Ich habe gerade das Paket mit Pycharm installiert und dann das Problem gelöst.
Das Problem könnte Ihr Dolmetscherpfad sein. Überprüfen Sie, wohin der Dolmetscher zeigt. In den meisten Fällen ist es ~/PycharmProjects/trial/venv/bin/python und dies könnte auf ein python bath verweisen, das als Teil von Pycharm installiert ist
Ändern Sie den Softlink von python zu Ihrem/usr/bin/python-Pfad und die Dinge sollten gut funktionieren