嗨我在ubuntu服务器14.10上使用mod_wsgi和django上的python运行apache 2时访问网站网址时收到以下错误。
我的django应用程序使用python 3.4,但它似乎默认为python 2.7,我无法从pycrypto从PIL和AES导入图像。
> / _的ImportError无法导入名称_imaging
请求 方法:GET
请求URL:
Django版本:1.7.3
异常类型:ImportError
异常值:
无法导入 name _imaging
例外 位置:/usr/local/lib/python3.4/dist-packages/PIL/Image.py in ,第63行,Python可执行文件:/ usr / bin / python
Python 版本:2.7.6
Python路径:
['/ var / www / blabla',
'/usr/local/lib/python3.4/dist-packages',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/ usr / lib / python2.7 / lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/ var / www / blabla',
'/usr/local/lib/python3.4/dist-packages']
答案 0 :(得分:9)
我相信mod_wsgi是针对特定版本的python编译的,所以你需要一个py3.4版本的mod_wsgi。您可以从您的操作系统的软件包存储库中获取一个,或者您可以构建一个没有太多戏剧性的软件包。从内存中你需要构建gcc和python-dev包(python3-dev?)。
好的,快速谷歌,对于ubuntu 14.10:sudo apt-get install libapache2-mod-wsgi-py3
应该安装一个py3版本的mod_wsgi(可能想删除现有的py2版本)。
添加shebang行不会有任何好处,因为在读取wsgi.py脚本之前已经加载了python解释器。
答案 1 :(得分:0)
从我在这里看到你的应用程序正在使用 py2 解释器与 py3 编译模块,这是不行的。
我想到的一个简单可行的解决方案是将 manage.py 的第一行添加或更改为#!/usr/bin/python3
。这将告诉脚本用 py3 解释。
接下来的猜测列表会在* .wsgi文件或apache配置中配置错误,无论你使用哪个。
答案 2 :(得分:0)
谢谢你们,
我实际上是在今天早上通过运行mod_wsgi的make install来解决这个问题,其中.configure指向python3.4。
我认为你是对的。