Python - ImportError:没有名为的模块

时间:2015-03-27 23:24:46

标签: python-2.7

我有以下目录结构:

img_search
   --- server
       --- __init__.py
       --- server_flask.py
   --- tests
       --- __init__.py
       --- test_kdtree.py
       --- test_distance_matrix.py
   --- __init__.py
   --- kdtree.py
   --- distance_matrix.py
服务器中的

__ init __。py 和测试为空,img_search中的 __ init __。py 包含以下代码:

from img_search import distance_matrix, kdtree

我使用以下导入在 server_flask.py 中使用 kdtree 中的类:

from img_search import kdtree

当我在PyCharm中运行 server_flask.py 时,它没有任何问题,但是当我在终端中运行它时,我收到错误。

  

追踪(最近一次通话):   File "server_flask.py", line 2, in <module>

     

from img_search import kdtree

     

ImportError: No module named img_search

我该如何解决这个问题? 提前谢谢

2 个答案:

答案 0 :(得分:0)

我想你有一些有意义的理由这样做,但它不需要看起来像这样。

通常,模块应提供一些功能,并作为提供某些API的一个包或库保持一致。

换句话说,应该避免这样做:

python server_flask.py

python img_search/server/server_flask.py

但是这个很好:

python main.py

main.py有某种:

from img_search.server import server_flask
# Do something if needed

有一个好的!

答案 1 :(得分:-1)

如果你真的需要这个,另一个选择就是弄乱path。在server_flask.py添加以下内容:

import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), '../..'))

sys.path.append会将join dirname server_flask.py __file__及其../..找到的模块位置添加到路径中目录。我们在这里。