被WSGI模块导入错误难住了
我正在写一个简单的Python WSGI应用程序,但遇到了模块导入错误的问题。我在当前目录下有一个.py文件,最开始导入时失败了。后来我加上了
sys.path.insert(0, '/Users/guhar/Sites/acom')
这样模块就能成功导入了。但是现在我尝试导入一个通过easy_install安装的模块,却还是导入失败。我试着设置
sys.path.insert(0, '/Library/Python/2.5/site-packages/')
这个路径里有egg文件,但还是不行。我原本以为在“/Library/Python/2.5/site-packages/”下的所有包都可以被WSGI应用程序使用。
有没有人能给我一些建议?
2 个回答
如果你在使用Apache的mod_wsgi模块,记得在你的虚拟主机配置中指定所有需要的Python路径,像这样:
WSGIDaemonProcess ... python-path=/srv/lala/www:/srv/lala/lib/python2.6/site-packages:/Library/Python/2.5/site-packages
阅读:
http://code.google.com/p/modwsgi/wiki/VirtualEnvironments
你不能仅仅把包含 .pth 文件的 Python 模块目录直接加到 sys.path 里。你必须使用 site.addsitedir() 或者 mod_wsgi 的其他选项来让它使用虚拟环境。
不过,我觉得你可能是在使用 MacOS X,可能你安装了第二个 Python 版本,而 mod_wsgi 正在使用的并不是你安装包的那个版本。或者你的第二个 Python 安装可能有问题,这在 MacOS X 上是很常见的。
顺便说一下,我假设你说的 WSGI 实际上是指 mod_wsgi,因为你用了这个标签。如果是这样,请不要把 WSGI 用来指代 mod_wsgi。WSGI 只是一个规范,而 mod_wsgi 是一个具体的托管实现。你不应该把这两个词混用。