使用apache2在mod_wsgi上运行django python 3.4

时间:2015-01-19 06:51:54

标签: django apache python-3.x mod-wsgi

嗨我在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']

3 个答案:

答案 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。

我认为你是对的。