importorror:没有名为-Python的模块

2024-04-28 02:10:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

我错过了什么?


Tags: 模块frompyimportsrc目录应用程序main
3条回答

要使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这样的相对路径直接运行脚本

from ..gen_py.lib import MyService

或者

from main.gen_py.lib import MyService

确保每个目录上都有一个(至少为空的)__init__.py文件。

sys.path的修改假定当前工作目录始终位于main/。事实并非如此。相反,只需将父目录添加到sys.path

import sys
import os.path

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

不要忘记在gen-py和lib中包含一个文件__init__.py,否则,它们将不会被识别为Python模块。

相关问题 更多 >