Python:即使目录中存在模块,也未找到

时间:2018-07-13 10:30:30

标签: python python-3.x class python-import diffbot

考虑一下我有以下项目结构:

+PROJECT
|  +models
|  |  =__init__.py
|  |  =client.py
|  |  =config.py
|
|  +tests
|  | =__init__.py
|  | =example.py
|  | =example_two.py
|
|  README.md
|  requirements.txt

当我尝试将客户端的类和配置中的变量导入example.py时,就像这样:

from models.config import var 
from models.client import Class

两个导入语句都收到 ModuleNotFound错误。我知道这个问题已经被问过很多次了,但是那些解决方案并不能解决我的问题。我尝试将客户端和配置与测试文件夹放置在同一级别。但是,我收到了同样的问题。如果有人可以帮助我解决此问题,那就太好了。

2 个答案:

答案 0 :(得分:0)

您将需要进行相对导入(PEP-328),但是根据此guide,您只能向上执行直到从中启动脚本的级别,即{{1 }}目录。

因此,您必须将tests目录添加到路径中,或者将项目的源文件夹添加到站点包中的.pth文件中,如图here

答案 1 :(得分:0)

我想到了三种可能性:

  • 该模块仅适用于某些python版本(例如3.5,但不适用于3.6)。
  • 模块当前所在的路径未出现在sys.path中。
  • 在导入模块时必须指定要使用的类,因为在模块本身的__init__.py中未指定。

据我所知,只有第一个选项可能会引起您的问题。
尽管如此,我还是会快速检查一下

import sys
sys.path

以防确实丢失了正确的路径。

sys.path.append('PathToModule')