我长期坚持这个问题,我的项目结构是这样的,
axis-1
当我执行TestService.py时,它说“ImportError:没有名为modules.TestModule Python的模块”
这是用来测试module
。
答案 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。