Python importError, пока импорт существует и Pycharm распознает его - PullRequest
0 голосов
/ 29 октября 2018

Я работаю над проектом, и у меня возникла ошибка, которую я не могу исправить по какой-то причине.

ошибка:

`from parser import WorldParser`
`ImportError: cannot import name WorldParser`

Я использую Pycharm, и я пытался использовать Pycycle, чтобы найти, есть ли у меня циклы импорта, но он не нашел ни одного, а также пытался вручную искать циклы, и я не нашел есть.

Структура программы следующая:

project folder contains:
agent.py
graph.py
parser.py
simulation.py
state.py
utils.py

Теперь я подробно остановлюсь на импорте каждого файла.

-----agent.py----

from utils import operation_dec,get_path_from_to

-----agent.py----

-----graph.py----

none

-----graph.py----

-----parser.py----

from graph import Vertex, Edge, UndirectedGraph

from state import WorldState

from utils import create_map_args, get_path_from_to

-----parser.py----

-----simulation.py----

from parser import WorldParser

from beautifultable import BeautifulTable

from agent import GreedyAgent, HumanAgent, VandalAgent

from state import WorldState

from utils import InfoObject

-----simulation.py----

-----state.py----

from beautifultable import BeautifulTable

-----state.py----

-----utils.py----

from heapq import *

-----utils.py----

любая помощь приветствуется, спасибо!

1 Ответ

0 голосов
/ 29 октября 2018

Вам нужно изменить выписку по импорту с

from graph import Vertex, Edge, UndirectedGraph
from state import WorldState
from utils import create_map_args, get_path_from_to

на следующее:

from .graph import Vertex, Edge, UndirectedGraph
from .state import WorldState
from .utils import create_map_args, get_path_from_to

когда вы ссылаетесь на модуль, который находится в том же каталоге. Точка сообщает Python, что импорт осуществляется из другого модуля в том же каталоге / пакете. Если вы оставите точку вне оператора import, Python решит, что вы ссылаетесь на глобальный пакет, а не на локальный. Посмотрите официальную документацию Python для более подробного объяснения.

редактирование: Я забыл упомянуть, что вы должны добавить файл __init__.py в каталог, чтобы указать Python, что каталог является пакетом Python.

...