PYTHONPATH冲突

时间:2013-04-20 05:03:52

标签: python google-app-engine python-2.7

我正在import ZipCodeDatabase中尝试helloworld.py

  • helloworld.py位于/google-app-engine/helloworld
  • ZipCodeDatabase模块存在/usr/local/lib/python/python2.7/dist-packages
  • PYTHONPATH = /usr/local/lib/python/python2.7/dist-packages;/usr/local/lib/python/

编译helloworld时,我仍然收到“ZipCodeDatabase模块未找到”。为什么不从PYTHONPATH中挑选?

1 个答案:

答案 0 :(得分:3)

我非常怀疑你有一个名为ZipCodeDatabase的模块。该命名约定通常保留在class内的module。模块通常是小写或lower_snake_case,表示包含模块的文件。我假设你已经在这里安装了pyzipcode,但它可能是一个不同的模块。

# assuming pyzipcode.py in the dist-packages directory
$ python -c 'from pyzipcode import ZipCodeDatabase'

如果我上面错了,那么你确定你正在运行安装了ZipCodeDatabase模块的python版本吗?

一些故障排除步骤:

$ which python
$ python --version
$ python -c 'import ZipCodeDatabase'
$ ls -l /usr/local/lib/python2.7/dist-packages/ | grep -i zip

另外,您是否真的有必要指定PYTHONPATH行?通常,site-packages文件夹(以及我认为Ubuntu上的dist-packages文件夹的扩展名)包含在默认PYTHONPATH中,以及您正在使用的python模块的当前目录。

您是如何安装ZipCodeDatabase的?你刚把文件放在那里了吗?尝试将其与helloworld.py文件放在一起,然后尝试导入它。此外,完整堆栈跟踪在这里是有用的信息,特别是当其他人试图诊断您遇到的问题时。

编辑:

好的,现在我知道你正在使用谷歌应用引擎(应该从你使用的路径中显而易见 - 我很抱歉),看起来它没有使用site-packages或{{ 1}}加载模块。您应该在项目中使用相关的第三方库创建子目录,并将该子目录添加到路径中。 免责声明:我从未使用过GAE,所以我可能会错过这个标记。

查看this answer了解如何构建项目,并从应用程序中将额外目录添加到路径中。