Относительный путь Python - ModuleNotFoundError - PullRequest
0 голосов
/ 28 сентября 2018

Мне нужно выбрать класс Python, который я создал, и поэтому мне нужно использовать относительные пути.Я использую Python версии 3.6.6.Вот пример того, как выглядит структура и код проекта:

modelling/
    test.py
    mod1/
        __init__.py
        classic_mod.py

init .py

from .classic_mod import classic

classic_mod.py

class classic:

    def __init__(self, input_string):
        self.input_string = input_string
        print(self.input_string)

    def log_info(self):
        print(self.input_string)

test.py

from .mod1 import classic_mod
from sklearn.externals import joblib

model = classic_mod.classic("Hello World!")
joblib.dump(model, "model.pkl")

Если я использую абсолютные пути, у меня возникают проблемы при загрузке файла pickle в python в другой папке.Когда я запускаю test.py, я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    from .mod1 import classic_mod
ModuleNotFoundError: No module named '__main__.mod1'; '__main__' is not a package

Как я могу решить эту ошибку импорта и в то же время выбрать класс, чтобы я мог использовать его где-нибудь еще?

1 Ответ

0 голосов
/ 28 сентября 2018

Вам необходимо заключить код в пакет, чтобы использовать относительный импорт.Установите сценарий установки и используйте флаг pip -e install, чтобы установить его как модуль разработки. - очень хорошее подробное объяснение проблемы, с которой вы столкнулись.

...