У меня есть проект, определенный ниже:
project/
__init__.py
dog.py
cat.py
В моем dog.py я звоню:
import project.cat
, что дает мне эту ошибку:
ModuleNotFoundError: No module named 'project'
Однако я настроил PYTHONPATH для родительского каталога проекта, который, если я запускаю dog.py вне Pycharm (например, в командной строке), работает без исключений.
Теперь даже если я добавил папку проекта как Source Root, Pycharm по-прежнему помечает мой оператор импорта как неправильный (красный цвет) и также не позволяет мне запускать его внутри Pycharm для программы dog.py. Это так запутанно. Кто-нибудь может помочь?
* PS: я не хочу использовать относительный импорт в dog.py, например, «из .cat import *», потому что у меня есть, если name == Оператор main в dog.py, который python не позволяет мне выполнять относительный импорт внутри dog.py.
===============
Добавление дополнительной информации:
Я заметил, сделал ли я папку sr c в проекте чтобы сделать структуру вроде:
project/
__init__.py
src/
__init__.py
dog.py
cat.py
, тогда я могу назвать это в dog.py:
import src.cat
Но, таким образом, я все еще беспокоюсь, потому что когда я запускаю программу в Pycharm , Я должен использовать этот способ:
import src.cat
, когда я запускаю программу в ноутбуке i python, я должен импортировать как:
import project.src.cat
Это заставляет меня постоянно переключать свой код когда мне приходится бегать в разных местах.
=====================
Если я просто сделаю это в dog.py
import cat
Это будет работать в Pycharm. Но когда я звоню в командной строке, там все идет не так:
In [10]: import project.dog
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-10-be5ebc05b4b0> in <module>
----> 1 import project.dog
~/PycharmProjects/project/dog.py in <module>
2 import pandas as pd
3 import numpy as np
----> 4 import cat
5 from datetime import datetime
6
ModuleNotFoundError: No module named 'cat'