Pycharm не может импортировать модуль из имени родительской папки - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть проект, определенный ниже:

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'

1 Ответ

0 голосов
/ 19 апреля 2020

Проблема устранена путем создания моей родительской папки моего проекта в качестве папки root и создания root в качестве источника Root.

parent-folder\
  project\
    __init__.py
    dog.py
    cat.py

Теперь она хорошо работает как в командной строке, так и в Pycharm. просто добавив одну строку в .bashr c:

export PYTHONPATH=$PYTHONPATH:~/project
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...