Ser*_*rov 6 python google-app-engine jinja2 pythonpath
我已经为我的GAE应用程序创建了一个包含所有模块的文件夹,并使用像Jinja2这样的外部库来保存所有内容.我有这样的文件夹结构:
lib\
\utils\
\__init__.py
\firepython
\jinja2
\jsonpickle
__init__.py
sessions.py
Run Code Online (Sandbox Code Playgroud)
当我尝试从utils__init__.py加载Jinja时,我收到错误ImportError: No module named jinja2.environment
.当我查看Jinja2导入说明时,我看到它们看起来像from jinja2.loaders
.我尝试将它们更改为类似from lib.jinja2.loaders
但是其他一些错误会出现在导入中.更重要的是,如果有一种更方便,更正确的方式正确导入模块,我认为在外部库源中更改这些导入是不错的做法.我也添加了一些路径PYTHONPATH
但它并没有解决所有问题.如何正确导入放置在另一个文件夹中的外部包,可能具有深层结构?
实际上,您不必更改外部库中的导入 - 尽管取决于您的环境,您甚至可能也有.
修改你的PYTHONPATH应该足够了; PYTHONPATH应该包含一个'lib'路径,它是绝对的或相对于你的家,例如.
然后你就可以做到
from jinja2 import WHATEVER
Run Code Online (Sandbox Code Playgroud)
没有PYTHONPATH的另一种方法是使用sys.path.append()
和添加python代码中的路径.我实际上赞成这一点,因为它也允许每个应用程序路径.
详细信息可能会有点长,但请遵循官方文档
这些选项适用于一般的python开发而不是GAE特性; 如果它在您的开发机器上不起作用,您应该发布更多细节(精确导入,绝对路径,pythonpath ......).
上传到谷歌时,正确的项目结构和appcfg.py的使用应该是锻炼依赖性:请看一下这个好答案:如何使用Google App Engine管理第三方Python库?(virtualenv?pip?)并遵循这些准则.
使用GAE的一个好方法是通过yaml应用程序指令.请查看包含以下内容的文档:http://code.google.com/appengine/docs/python/config/appconfig.html#Includes
还记得GAE 正式支持 python 2.5,而2.7支持是实验性的
Python 2.7现在已正式支持
归档时间: |
|
查看次数: |
5596 次 |
最近记录: |