对于我的gae python项目,我想导入一个名为“vobject”的外部库。在my.py文件中导入它的正确方法是什么?在
该项目的自述文件说,为了安装它,您需要运行
python setup.py install
另外,vobject需要“dateutil”包。在
因为这将在GAE上运行,所以我认为应该将这两个lib复制到我的项目中,而不是运行install脚本在代码中使用它。在
但是我遇到了一堆导入错误,我不确定外部gae/python库的正确约定是什么。在
^{pr2}$因为我组织项目的方式,我改变了icalendar.py的导入结构来自:
import dateutil.rrule
import dateutil.tz
收件人:
import external.dateutil.rrule
import external.dateutil.tz
我也试过:
from external.dateutil import *
对于这样结构的项目,正确的导入机制是什么:
-myGaeProject
--external
----__init__.py
----dateutil
------__init__.py
------tz.py
------rrule.py
------[more dateutil files]
----vobject
------__init__.py
------base.py
------icalendar.py
--handlers
------__init__.py
------mainHandler.py
好的方法是使用zipimport,你可以查一下jaikuengine的项目,他们有很多关于这个的好东西。在
http://code.google.com/p/jaikuengine/source/browse/trunk/build.py
在Jaiku中,所有外部lib都存储在目录
vendor
中,但是如果您看到应用程序yaml,将跳过vendor
中的所有文件。 Jaiku使用一个脚本来构建供应商中每个libs的zip,并在部署之前或dev_服务器启动时将其放到项目的根目录中。在这样,你就不需要修复libs的路径了。在
编辑加载所有压缩档案的示例 主要灵感来源于jaikuengine:
如果external缺少
__init__.py
文件,则无法执行from external import dateutil
。在不要修改库。如果要将所有库放在
external
中,在尝试从那里导入库之前,需要将external
添加到python路径中:相关问题 更多 >
编程相关推荐