Napisałem moduł ( my_mod.py
plik znajdujący się w folderze my_module
). Obecnie pracuję na pliku cool_script.py
znajdującym się w folderze cur_proj
. Otworzyłem folder w PyCharm za pomocą File - open (i zakładam, że jest to projekt PyCharm).
W ProjectView (CMD-7) widzę swój projekt cur_proj
(na czerwono), a pod „Bibliotekami zewnętrznymi” widzę my_module
. W cool_script.py mogę pisać
from my_module import my_mod as mm
a PyCharm sugeruje nawet my_mod. Na razie w porządku.
Jednak gdy próbuję uruchomić cool_script.py, PyCharm mówi mi „Żaden moduł o nazwie my_module”
Wydaje mi się to dziwne, ponieważ
A) w terminalu (OS 10.10.2), w pythonie mogę zaimportować moduł bez problemu - jest odpowiedni wpis w PYTHONPATH w .bashrc
B) w PyCharm - Ustawienia - Projekt cur_proj - Interpreter projektu - Koło zębate obok interpretera Pythona - więcej - pokazuje ścieżki dla wybranej ikony interpretera, pojawiają się ścieżki z PYTHONPATH (tak jak myślę, że powinny)
W związku z tym, dlaczego pojawia się błąd, gdy próbuję uruchomić cool_script.py? - Czego mi brakuje?
Uwagi:
- Nie deklaruję innej / specjalnej wersji Pythona na początku cool_script.py
- Upewniłem się, że ścieżka do
my_module
jest prawidłowa - I umieścić
__init__.py
pliki (puste pliki) zarówno wmy_module
oraz wcur_proj
- Nie używam
virtualenv
Dodatek 2015-luty-25
Kiedy przechodzę do PyCharm, aby uruchomić - Edytuj konfiguracje, dla mojego bieżącego projektu są dwie opcje zaznaczone znacznikiem wyboru: „ Dodaj katalogi główne zawartości do PYTHONPATH ” i „ Dodaj katalogi źródłowe do PYTHONPATH ”. Po odznaczeniu obu mogę załadować mój moduł.
Więc teraz działa - ale dlaczego ?
Pojawiły się dalsze pytania:
- Co to są „korzenie zawartości”, a co „źródła źródłowe”? I dlaczego dodanie czegoś do PYTHONPATH powoduje jej awarię?
- czy powinienem zawsze odznaczać obie te opcje (a więc również w ustawieniach domyślnych, nie tylko w konfiguracjach specyficznych dla projektu (lewy panel okna dialogowego Uruchom / debuguj konfiguracje)?
Enable Django Support
w ustawieniach Languages & Frameworks -> Django
w wersji Pro PyCharm. To było otwarcie konsoli django, która spowodowała problemy z importem.
from foldername.mymodule import mymethod
. Kolejną rzeczą, którą musiałem zrobić, jest dodanie pustego folderu _init .py do wszystkich folderów, których używałbyś, aby dostać się do swojego modułu, więc w przypadku,from parentfolder.childfolder.mymodule ...
gdybyś potrzebował init w dwóch folderach. W zależności od tego, gdzie znajdują się foldery względem siebie, może być potrzebny pakiet najwyższego poziomu,sys.path
zgodnie z opisem w tej odpowiedzi