我有一个python应用程序,其目录结构如下:
src
|
+---- main
|
+---- util
|
+---- gen_py
|
+---- lib
在包main中,我有一个名为MyServer.py的python模块,它有一个import语句,如:
from gen_py.lib import MyService
为了使该语句正常工作,我在MyServer.py的开头放置了以下行:
import sys
sys.path.append('../gen_py/lib')
在终端中运行MyServer.py时,出现以下错误:
ImportError: No module named gen_py.lib
我错过了什么?
要使Python模块导入工作,路径中必须有“src”,而不是“gen_py/lib”。
当处理像
import gen_py.lib
这样的导入时,它查找模块gen_py
,然后查找子模块lib
。由于模块
gen_py
不在“../gen-py/lib”中(它将在“..”中),因此添加的路径对导入过程没有任何帮助。根据运行它的位置,尝试将相对路径添加到“src”文件夹。也许是
sys.path.append('..')
。您也可以在src文件夹中通过python main/MyServer.py
这样的相对路径直接运行脚本或者
确保每个目录上都有一个(至少为空的)
__init__.py
文件。对
sys.path
的修改假定当前工作目录始终位于main/
。事实并非如此。相反,只需将父目录添加到sys.path
:不要忘记在gen-py和lib中包含一个文件
__init__.py
,否则,它们将不会被识别为Python模块。相关问题 更多 >
编程相关推荐