ImportError:没有名为modules.TestModule的模块

时间:2015-12-24 06:23:21

标签: python web.py

我长期坚持这个问题,我的项目结构是这样的,

enter image description here

axis-1

当我执行TestService.py时,它说“ImportError:没有名为modules.TestModule Python的模块”

这是用来测试module

的示例

2 个答案:

答案 0 :(得分:2)

您的计划的切入点是什么?通常,程序的入口点将位于项目的根目录中。由于它位于根目录,因此根目录中的所有模块都是可导入的。 但在你的情况下,入口点本身就是根级别内的一个级别。

最好的方法应该是在根级别有一个loader文件(main.py),其余的可以在包中。另一种不推荐的方法是在导入任何包之前在sys.path中附加根目录路径。

在导入包之前添加以下代码。

import os, sys
currDir = os.path.dirname(os.path.realpath(__file__))
rootDir = os.path.abspath(os.path.join(currDir, '..'))
if rootDir not in sys.path: # add parent dir to paths
    sys.path.append(rootDir)

我修改了yut testscript.py代码,如下所示。请试一试。

import web
import sys
import os, sys
    currDir = os.path.dirname(os.path.realpath(__file__))
    rootDir = os.path.abspath(os.path.join(currDir, '..'))
    if rootDir not in sys.path: # add parent dir to paths
        sys.path.append(rootDir)

import modules.TestModule as TM    
urls = (
    '/testmethod(.*)', 'TestMethod'
)    
app = web.application(urls, globals())   
class TestMethod(web.storage):
    def GET(self, r):    
        return TM.get_func(web.input().string)    
if __name__ == "__main__":
    app.run()

答案 1 :(得分:1)

如果目录'DiginQ'在你的python sys.path上,我相信你的import语句应该可以正常工作。

有很多方法可以在你的python路径上获取目录'DiginQ'。

在导入模块之前,最简单的(但不是最好的)可能是添加这样的语句。测试模块:

import sys
sys.path.extend([r'C:\Python27\DiginQ'])

根据您的帖子,它看起来像路径是C:\ Python27 \ DiginQ,但如果这不正确,只需使用正确的路径。

如果你谷歌如何设置python路径,你会发现很多点击。最重要的是您的路径必须包含目录上方的目录以及您尝试导入的包。在您的情况下,这意味着DiginQ。