如何在Apache中使用Python 3和Django?

2024-04-20 04:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

你不能和django一起看python3。来自Django常见问题解答: http://docs.djangoproject.com/en/dev/faq/install/#can-i-use-django-with-python-3

我可以在Python 3中使用Django吗?

现在不行。Python 3.0对Python语言引入了许多向后不兼容的更改,尽管这些更改通常对Python的未来是一件好事,但大多数Python软件要赶上并能够在python3.0上运行还需要一段时间。对于更大的基于Python的软件,如Django,这种转换预计至少需要一到两年的时间(因为它涉及放弃对旧Python版本的支持,所以必须逐步完成)。

同时,Python开发团队将支持Python 2.x版本并提供错误修复和安全更新,因此在转换期间继续使用python2.x版本不会带来任何风险。

这些答案对于Django 1.6来说不再正确-它支持python3。mod_wsgi页面说版本3.4支持python 3https://code.google.com/p/modwsgi/

不知道现在是否一切正常(我会在发现后返回并编辑)!

答案是肯定的,它起作用了!

我有一个运行Python3、Django 1.5.6、Apache2.2和mod_wsgi 3.4的AWS EC3 Ubuntu实例

Python3.3.4:

sudo add-apt-repository ppa:fkrull/deadsnakes
sudo apt-get install python3.3
sudo apt-get install python3.3-dev python3.3-doc idle-python3.3

ppa:fkrull/deadsnakes是一个apt repo,它有多个可用的python版本-请参见https://launchpad.net/~fkrull/+archive/deadsnakes

然后我使用pip页上的指令添加了pip;http://pip.readthedocs.org/en/latest/installing.html。(请记住,您的python可能在您的路径上是'python3.3',此时,普通的'python'将指向python 2.x!)

在那之后,virtualenv。然后我虚拟安装了python。激活并将环境的bin/目录添加到$PATH之后,我现在得到了一个干净的python3。

然后,在我激活虚拟env之后,我做了“pip Django”和所有其他必需的包(它们相当多)。我有Django版本1.6.2(我一直在开发这个版本,并在Mac上运行python 3.3.3没有问题)。

我遇到的最大问题是安装lxml,因为它需要使用apt get安装libxml2和libxslt(它是C代码的包装器),我花了几次尝试才意识到它们还没有安装(lxml编译失败)。

在尝试让我的RDS数据库实例启动并运行并可用(postgresql,注意python3下的mysql,你会遇到很多python db驱动程序的麻烦!但我的大部分问题都是由于我试图理解AWS的安全配置造成的),这相对来说是一帆风顺的:

sudo apt-get install apache2 apache2-threaded-dev

这将安装apache,您需要下一位的开发包。

在这一点上,我尝试使用apt包来实现mod戋wsgi,但我认为最好的做法是按照这里的说明编译并安装它-https://code.google.com/p/modwsgi/wiki/InstallationInstructions

我在配置、生成或生成安装方面没有问题。确保在virtualenv激活的环境中编译它。

您必须手动将配置添加到Apache的配置中:

# wsgi module
LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so
# now configure it
<Directory /my/app/path>
 <Files wsgi.py>
  Order deny,allow
  Allow from all
 </Files>
</Directory>
WSGIScriptAlias / /my/app/path/wsgi.py
WSGIPythonPath /my/app:/path/to/the/virtual/env/lib/python3.3/site-packages

从最广泛的角度来看,这一切都在起作用。

Django 1.6+和mod_wsgi 3.4+需要与Apache一起使用Python 3。有关详细信息,请参阅scot's answer

相关问题 更多 >