Python ModuleNotFoundError собственных модулей (внешний анаконда) - PullRequest
0 голосов
/ 07 ноября 2018

Итак, у меня есть печально известная ModuleNotFoundError, и в течение пары часов я не могу найти решение. Я знаю, что мой проект работает в Pycharm, но я хотел настроить его в Visual Studio Code.

ошибка

(base) C:\pythonprojects\AI_Project>C:/Users/quint/Anaconda3/python.exe c:/pythonprojects/AI_Project/be/kdg/MarkovDecisionProcess/Main.py
Traceback (most recent call last):
  File "c:/pythonprojects/AI_Project/be/kdg/MarkovDecisionProcess/Main.py", line 1, in <module>
    import be.kdg.MarkovDecisionProcess.Agent as Agent
ModuleNotFoundError: No module named 'be'

Структура моего проекта

project
|__be
   |__kdg
      |__MarkovDecisionProcess
         |__Agent.py
         |__Main.py
         |__Percept.py  

в main.py

import be.kdg.MarkovDecisionProcess.Agent as Agent
import be.kdg.MarkovDecisionProcess.Percept as Percept 
import gym as gym
import numpy as np
...

в Agent.py

import gym
import numpy as np
from be.kdg.MarkovDecisionProcess.Percept import Percept

class Agent:
    def __init__(self, stateRewards, state_count, action_count):
    ...

моя среда: Python 3.6.5 («база»: conda)

путь к питону

"python.pythonPath": "C:\\Users\\quint\\Anaconda3\\python.exe"

Сначала у меня было __Init__.py в каждом каталоге, но потом я прочитал здесь http://python -notes.curiousefficiency.org / en / latest / python_concepts / import_traps.html , что это также может быть проблемой .

Я буду предупрежден о любых предложениях и попробую их, когда я их читаю. Заранее спасибо: -)

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Сначала вы должны добавить __init__.py к вашему MarkovDecisionProcess, чтобы сделать его модулем. Затем вы должны добавить \path\to\project к PYTHONPATH для импорта.

Например, в Windows:

setx PYTHONPATH /M "\path\to\project"

В Unix / macOS:

PYTHONPATH=$PYTHONPATH:/path/to/project

Тогда вы можете import вот так: from be.kdg.MarkovDecisionProcess import Agent

В качестве альтернативы вы можете использовать importlib.util

0 голосов
/ 07 ноября 2018

, если вы хотите импортировать агента в Main.py, просто используйте

import Agent

потому что находится в том же каталоге

...