当模块已在sys.path中时导入失败

时间:2009-09-09 14:03:57

标签: python django

即使在sys.path中导入也导致导入失败,这很奇怪。

今天,我在我实验室的电脑上在ubuntu上设置了一个谷歌应用引擎django环境。当我检查代码并在Windows中运行它(在实验室中使用相同的PC)时,它工作正常。

但是当我去宿舍,检查代码并开始运行时,它很奇怪。

我打印sys.path,如下所示:

['/home/tower/googlecode/mygae', '/home/tower/googlecode/mygae/.google_appengine', '/home/tower/googlecode/mygae/.google_appengine/lib/antlr3', ...]

当我运行python时抱怨

from google.appengine.api import apiproxy_stub_map
ImportError: No module named appengine.api

很容易知道Google模块位于'/home/tower/googlecode/mygae/.google_appengine' 目录,并且每个模块的__init__.py都存在。

那么这个奇怪的事情可能是什么原因呢?或者我搞砸了什么?

感谢。

3 个答案:

答案 0 :(得分:2)

您可以导入googlegoogle.appengine吗? 您确定解释器已读取并遍历对模块树的访问权限吗?

答案 1 :(得分:1)

您似乎从其他地方获得了一个名为“google”的模块(或软件包) - 可能是/home/tower/googlecode/mygae - 并且谷歌模块中没有appengine。要检查,请打印google.__file__,如果可能,请google.__path__;这应该是提供信息。

答案 2 :(得分:0)

有时,当错误不同时,例如语法错误,您可能会获得模块的导入错误。试试

import pdb;pdb.set_trace()

在导入之前然后s(tep)进入导入,并且n(ext)thruogh有问题的模块看到你得到错误。