我有以下目录结构:
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
我该如何解决这个问题? 提前谢谢
答案 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__
及其../..
找到的模块位置添加到路径中目录。我们在这里。