Ich habe ein Modul geschrieben (eine Datei my_mod.py
, die sich im Ordner befindet my_module
). Derzeit arbeite ich in der Datei cool_script.py
, die sich im Ordner befindet cur_proj
. Ich habe den Ordner in PyCharm mit File - open geöffnet (und ich gehe daher davon aus, dass es sich um ein PyCharm-Projekt handelt).
In ProjectView (CMD-7) kann ich mein Projekt cur_proj
(in rot) und unter "Externe Bibliotheken" sehen my_module
. In cool_script.py kann ich schreiben
from my_module import my_mod as mm
und PyCharm macht sogar Vorschläge für my_mod. So weit, ist es gut.
Wenn ich jedoch versuche, cool_script.py auszuführen, sagt PyCharm "Kein Modul mit dem Namen my_module".
Das kommt mir komisch vor, weil
A) Im Terminal (OS 10.10.2), in Python, kann ich das Modul problemlos importieren - es gibt einen entsprechenden Eintrag im PYTHONPATH in .bashrc
B) In PyCharm - Einstellungen - Projekt cur_proj - Projektinterpreter - CogWheel neben Python-Interpreter - mehr - Pfade für das ausgewählte Interpreter-Symbol anzeigen, werden die Pfade von PYTHONPATH angezeigt (wie ich denke, dass sie sollten).
Warum wird der Fehler angezeigt, wenn ich versuche, cool_script.py auszuführen? - Was vermisse ich?
Anmerkungen:
- Ich deklariere keine andere / spezielle Python-Version oben in cool_script.py
- Ich habe dafür gesorgt, dass der Weg zu
my_module
korrekt ist - Ich lege
__init__.py
Dateien (leere Dateien) sowohl inmy_module
als auch incur_proj
- Ich benutze nicht
virtualenv
Nachtrag 2015-Feb-25
Wenn ich in PyCharm zum Ausführen - Konfigurationen bearbeiten gehe, werden für mein aktuelles Projekt zwei Optionen mit einem Häkchen ausgewählt: " Hinzufügen von Inhaltswurzeln zu PYTHONPATH " und " Hinzufügen von Quellwurzeln zu PYTHONPATH ". Wenn ich beide deaktiviert habe, kann ich mein Modul laden.
So funktioniert es jetzt - aber warum ?
Weitere Fragen stellten sich:
- Was sind "Inhaltswurzeln" und was sind "Quellwurzeln"? Und warum bricht das Hinzufügen von etwas zum PYTHONPATH irgendwie?
- sollte ich diese beiden Optionen ständig deaktivieren (also auch in den Standardeinstellungen, nicht nur in den projektspezifischen Konfigurationen (linker Bereich des Dialogfelds Konfigurationen ausführen / debuggen)?
from foldername.mymodule import mymethod
. Eine andere Sache, die ich tun musste, ist, den leeren Ordner _init .py in alle Ordner einzufügen , die Sie verwenden würden, um zu Ihrem Modul zu gelangen, fallsfrom parentfolder.childfolder.mymodule ...
Sie init in zwei Ordnern benötigen würden. Abhängig davon, wo sich die Ordner relativ zueinander befinden, benötigen Sie möglicherweise ein Paket der obersten Ebene,sys.path
wie in dieser Antwort beschriebenEnable Django Support
der EinstellungenLanguages & Frameworks -> Django
in der Pro-Version von PyCharm. Es wurde eine Django-Konsole geöffnet, die die Importprobleme verursachte.Antworten:
Wenn sich Ihr eigenes Modul im selben Pfad befindet, müssen Sie den Pfad als markieren
Sources Root
. Klicken Sie im Projektexplorer mit der rechten Maustaste auf das Verzeichnis, das Sie importieren möchten. Dann auswählenMark Directory As
und auswählenSources Root
.Ich hoffe das hilft.
quelle
__init__.py
, damit Python die Verzeichnisse als Pakete enthaltend behandelt: stackoverflow.com/questions/448271/….
vor dem Paketnamen zu verwenden, um anzugeben, dass dieses Paket lokal istAlso, wenn du gehst
-> Einstellung -> Projekt: Mein_Projekt -> Projektstruktur,
Nur das Verzeichnis, in dem der Quellcode verfügbar ist, und markieren Sie ihn als "Quellen" (Sie können ihn im selben Fenster sehen). Das Verzeichnis mit dem Quellcode sollte blau werden. Jetzt können Sie in Module importieren, die sich im selben Verzeichnis befinden.
quelle
PyCharm Community / Professional 2018.2.1
Ich hatte gerade dieses Problem und konnte es auf ähnliche Weise lösen, wie es @Beatriz Fonseca und @Julie betonten.
Wenn Sie zu
File
->Settings
->Project: YourProjectName
-> gehenProject Structure
, haben Sie ein Verzeichnislayout des Projekts, in dem Sie gerade arbeiten. Sie müssen Ihre Verzeichnisse durchsuchen und sie entweder alsSource
Verzeichnis für alle Ihre Quelldateien kennzeichnen oder alsResource
Ordner für Dateien, die ausschließlich zum Importieren bestimmt sind.Sie sollten auch sicherstellen, dass Sie
__init__.py
Dateien in Ihren Ressourcenverzeichnissen oder wirklich überall dort ablegen, aus dem Sie importieren möchten, und es funktioniert einwandfrei.Ich hoffe, diese Antwort hilft jemandem und hoffentlich wird JetBrains diesen nervigen Fehler beheben.
quelle
Mark Directory as
aus dem Kontextmenü aus und wählen SieSources Root
.Ich habe versucht, den Speicherort meiner Dateien zu ermitteln.
z.B
E:\git_projects\My_project\__init__.py is my location.
Ich ging zu Datei -> Einstellung -> Projekt: Mein_Projekt -> Projektstruktur und fügte das Inhaltsstammverzeichnis zu einem ungefähren Ort hinzu
E:\git_projects\My_project
es hat bei mir funktioniert.
quelle
/home/my_user/git_projects/this_git_project/this_pycharm_project/
. Ich habe/home/my_user/git_projects/this_git_project/
als Inhaltsstamm und/home/my_user/git_projects/this_git_project/this_pycharm_project/
als einziger Quellordner hinzugefügt und alles hat endlich geklappt.my_module
Ist ein Ordner kein Modul und Sie können keinen Ordner importieren. Versuchen Sie,my_mod.py
in denselben Ordner wie den zu wechseln,cool_script.py
und tun Sie dies dannimport my_mod as mm
. Dies liegt daran, dass Python nur im aktuellen Verzeichnis und suchtsys.path
und daher nur dann gefunden wird,my_mod.py
wenn es sich im selben Verzeichnis befindetOder Sie können hier nach einer Antwort suchen , die Ihnen erklärt, wie Sie aus anderen Verzeichnissen importieren können.
Was Ihre anderen Fragen betrifft, weiß ich nicht, da ich PyCharm nicht verwende.
quelle
Ich habe auch den Fehler "Quellwurzeln zu PYTHONPATH hinzufügen" erhalten. Mein Problem war, dass ich zwei Ordner mit demselben Namen hatte, wie
project/subproject1/thing/src
und,project/subproject2/thing/src
und ich hatte beide als Quellstamm markiert. Als ich einen der"thing"
Ordner in"thing1"
(einen beliebigen eindeutigen Namen) umbenannte, funktionierte es.Wenn PyCharm automatisch ausgewählte Quellwurzeln hinzufügt, verwendet es möglicherweise nicht den vollständigen Pfad und verwechselt daher Ordner mit demselben Namen.
quelle
Dies kann verursacht werden, wenn der Python-Interpreter Ihren Code nicht finden kann. Sie müssen Python ausdrücklich erwähnen, um Ihren Code an dieser Stelle zu finden.
Um dies zu tun:
sys.path.extend(['your module location'])
Python - Konsole.In deinem Fall:
Schreiben Sie zu Beginn den folgenden Code:
Nachdem Sie diese Anweisung geschrieben haben, können Sie den folgenden Befehl ausführen:
quelle
Der wichtigste verwirrende Schritt, der ausgeführt werden muss, besteht darin, die Ausführungskonfiguration für die Quelldatei, die Sie ausführen möchten, neu zu erstellen, damit die IDE die neuen Pfade aufnimmt.
Die Art und Weise, wie es für mich tatsächlich funktioniert hat, war, zu Konfigurationen ausführen / bearbeiten ... zu gehen, die Konfiguration für die Datei auszuwählen, die Sie auf der linken Seite ausführen möchten, das Kontrollkästchen "Quellwurzeln zu PYTHONPATH hinzufügen" zu deaktivieren, zu speichern, und dann gehen Sie zurück und aktivieren Sie das Kontrollkästchen und speichern Sie. DANN würde es funktionieren.
quelle
Invalidate Cache/Restart
zweimal gemacht hatte!Inhaltswurzeln sind Ordner, die Ihren Projektcode enthalten, während Quellwurzeln ebenfalls als dieselben definiert sind. Der einzige Unterschied, den ich verstanden habe, war, dass der Code in den Quellwurzeln vor dem Code im Inhaltsstamm erstellt wird.
Wenn Sie diese Option deaktivieren, wirkt sich dies nicht auf die Laufzeit aus, bis Sie keine separaten Module in Ihrem Paket erstellen, die manuell mit Django verbunden sind. Das heißt, wenn eine Ihrer Dateien nicht den 'from django import ...' enthält oder eine der Funktionen nicht über django aufgerufen wird, führt das Deaktivieren dieser beiden Optionen zu einer Fehlfunktion.
Update - Das Problem tritt nur bei Verwendung von Virtual Environmanet und nur bei der Steuerung des Projekts über das bereitgestellte Terminal auf. Ursache Das Terminal funktioniert weiterhin über den Standardsystem-Pyhtonpfad und nicht über die virtuelle Umgebung. während das Python Django Control Panel gut funktioniert.
quelle
Die Lösung für dieses Problem, ohne das Verzeichnis als Quellstamm markieren zu müssen, besteht darin, die Ausführungskonfigurationen zu bearbeiten. Wählen Sie in der Ausführung die Option "Eingabe umleiten von" und wählen Sie das Skript aus, das Sie ausführen möchten. Dies funktioniert, weil es dann so behandelt wird, als ob das Skript interaktiv in diesem Verzeichnis ausgeführt wurde. Python markiert den Modulnamen jedoch weiterhin mit dem Fehler "kein Modul mit dem Namen x":
Wenn der Interpreter die import-Anweisung ausführt, sucht er in einer Liste von Verzeichnissen, die aus den folgenden Quellen zusammengestellt wurden, nach x.py:
quelle
Pycharm 2017.1.1
View->ToolBar
&View->Tool Buttons
Project
, klicken Sie mit der rechten Maustaste darauf und drücken SieAutoscroll to source
und führen Sie dann Ihren Code aus.Das hat bei mir funktioniert.
quelle
ln -s. someProject
Wenn Sie someDirectory / someProjectDir und zwei Dateien haben, versuchen file1.py und file2.py sowie file1.py, mit dieser Zeile zu importieren
aus someProjectDir Importdatei2
Es funktioniert nicht, selbst wenn Sie someProjectDir als Quellverzeichnis festgelegt haben und selbst wenn es in den Einstellungen, im Projekt und im Projektstrukturmenü als Inhaltsstamm angezeigt wird. Die einzige Möglichkeit, dies zu tun, besteht darin, das Projekt wie oben gezeigt zu verknüpfen (Unix-Befehl, funktioniert auf dem Mac, nicht sicher, ob er verwendet wird oder welche Syntax für Windows verwendet wird). Es scheint einen Mechanismus zu geben, bei dem Pycharm dies automatisch entweder beim Auschecken aus der Versionskontrolle oder beim Hinzufügen als Kontextstamm ausführt, da der Softlink von Pycharm in einem abhängigen Projekt erstellt wurde. Daher nur das gleiche zu kopieren, obwohl die seltsame Replikation des Verzeichnisses ärgerlich und die Notwendigkeit verwirrend ist. Auch in der Abhängigkeit, in der automatisch erstellt wurde, wird es unter Versionskontrolle nicht als neues Verzeichnis angezeigt. Vielleicht zeigt der Vergleich von .idea-Dateien mehr.
quelle
Die Antwort, die für mich funktioniert hat, war in der Tat, was OP in seinem Update 2015 erwähnt: Deaktivieren Sie diese beiden Kontrollkästchen in Ihrer Python-Ausführungskonfiguration:
Ich hatte bereits die Ausführungskonfiguration so eingestellt, dass sie das richtige venv verwendet, sodass PyCharm keine zusätzlichen Arbeiten zum Hinzufügen von Dingen zum Pfad ausführen musste. Stattdessen verursachte es Fehler.
quelle