自己模块的Python ModuleNotFoundError(外部anaconda)

时间:2018-11-07 14:42:26

标签: python python-3.x python-module

因此,我遇到了臭名昭著的ModuleNotFoundError,而且几个小时后我找不到解决方案。我知道我的项目可以在Pycharm中运行,但是我想在Visual Studio Code中进行设置。

错误

import string
df['C'] = df['C'].str.translate(None, string.translate(string.punctuation, None, '<>'))

我的项目结构

(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'

在main.py

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

在Agent.py

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

我的环境:Python 3.6.5('base':conda)

python路径

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

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

首先,我在每个目录中都有__Init__.py,但是随后我在这里http://python-notes.curiousefficiency.org/en/latest/python_concepts/import_traps.html读到这也可能是一个问题。

如果有任何建议,我会保持警觉,并在阅读时尝试它们。 在此先感谢:-)

2 个答案:

答案 0 :(得分:0)

如果要在Main.py中导入代理,请使用

import Agent

因为它在同一目录中

答案 1 :(得分:0)

您首先必须将__init__.py添加到MarkovDecisionProcess使其成为一个模块。然后,您必须将\path\to\project添加到PYTHONPATH才能导入。

例如,在Windows中:

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

在Unix / macOS中:

PYTHONPATH=$PYTHONPATH:/path/to/project

然后,您可以像这样importfrom be.kdg.MarkovDecisionProcess import Agent

或者,您可以使用importlib.util