Python在Google AppEngine中的模块引入问题

来源:互联网 发布:java hashmap 排序 编辑:程序博客网 时间:2024/05/19 11:38

在GAE中遇到一个很怪的模块导入问题,问题的本质,就像Java的classpath设置一样,是python中导入模块时搜索路径的问题。比如站点目录结果如下:

mysite├─__init__.py ├─models.py ├─templates [dir]├─static [dir]└─check [dir]      ├─__init__.py       ├─views.py      └─models.py

在check目录的views.py中,我想引用根目录中的models.py中的函数,查看网页时,直接报错,找不到导入对

然后觉得很奇怪,就使用相对引用语法,应该能通过编辑器语法检查,但是在AppEngine无法运行。思前想后,应该是sys.path中,代码目录不在模块搜索路径中。搞之,修改django的启动文件,加入:

from os.path import dirnameimport syssys.path.append(dirname(dirname(__file__)))

然后将sys.path的内容输出到浏览器,发现一个奇怪的现象:第一次访问时,上面加入的搜索路径是存在的;刷新浏览器后,新加的搜索路径莫明其妙的消失了!

万幸的是,根目录还是在搜索路径中的。所以只能灵活灵活地干活了:即将根目录的models.py,放到一个子目录中,然后使用from common.models import YourModuleName,OK!

mysite├─__init__.py ├─templates [dir]├─static [dir]├─common [dir]│     ├─__init__.py│     └─models.py └─check [dir]      ├─__init__.py       ├─views.py      └─models.py

原创备份