ImportError: No module named modules.TestModule

ImportError: No module named modules.TestModule

我在这个问题上卡了很久,我的项目结构是这样的,

import web
import sys
sys.path.append("...")
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()

当我执行 TestService.py 它说 "ImportError: No module named modules.TestModule Python"

这是用来测试 module 的样本。

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

最好的方法应该是在根级别有一个加载程序文件 (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()

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

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

也许最简单(但不是最好)的方法是在导入之前添加这样的语句 modules.Testmodule:

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

根据您的post,路径看起来像是 C:\Python27\DiginQ,但如果不正确,请使用正确的路径。

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