被WSGI模块导入错误难住了

2 投票
2 回答
3275 浏览
提问于 2025-04-15 23:13

我正在写一个简单的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 个回答

1

如果你在使用Apache的mod_wsgi模块,记得在你的虚拟主机配置中指定所有需要的Python路径,像这样:

WSGIDaemonProcess ... python-path=/srv/lala/www:/srv/lala/lib/python2.6/site-packages:/Library/Python/2.5/site-packages
5

阅读:

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 是一个具体的托管实现。你不应该把这两个词混用。

撰写回答