首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ImportError:没有命名为Python的模块

ImportError:没有命名为Python的模块
EN

Stack Overflow用户
提问于 2011-09-29 01:59:59
回答 6查看 173K关注 0票数 68

我有一个python应用程序,它的目录结构如下:

src
 |
 +---- main
 |
 +---- util
 |
 +---- gen_py
         |
         +---- lib

包中,我有一个名为MyServer.py的python模块,它有一个导入语句,如下所示:

from gen_py.lib import MyService

为了使此语句起作用,我在MyServer.py的开头放置了以下行

import sys
sys.path.append('../gen_py/lib')

当我在终端中运行MyServer.py时,我得到以下错误:

ImportError:没有名为gen_py.lib的模块

我在这里错过了什么?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-09-29 02:08:58

您对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中包含一个文件Python -否则,它们不会被识别为Python模块。

票数 80
EN

Stack Overflow用户

发布于 2011-09-29 02:04:09

要使Python模块导入工作,路径中必须有"src“,而不是"gen_py/lib”。

在处理像import gen_py.lib这样的导入时,它先查找模块gen_py,然后查找子模块lib

由于模块gen_py不在“../gen/lib”中(它将在“..”中),因此您添加的路径对导入过程没有任何帮助。

根据您运行它的位置,尝试将相对路径添加到"src“文件夹。也许是sys.path.append('..')。在src文件夹中通过相对路径(如python main/MyServer.py )直接运行脚本也可能会成功

票数 6
EN

Stack Overflow用户

发布于 2011-09-29 02:06:46

from ..gen_py.lib import MyService

from main.gen_py.lib import MyService

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7587457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档