问题描述
我用这个命令安装了Django:
sudo apt-get install python-django
它安装了1.5.4-1ubuntu1版本。 Django文档说,从版本1.5开始,Django支持Python 3.然而,当我运行python 3解释器并尝试导入Django时,它说没有这样的模块。我试着寻找一个Django的python3版本,但是没有这样的包存在。我怎样才能让django在python3上工作?我更喜欢使用ubuntu软件包而不是手动安装。
最佳解决方法
我强烈建议避免使用pip3
在系统site-packages中安装。我已经制作了these arguments before,但我会给你说明:
-
系统更新打破了一切
-
安装apt包可以覆盖pip-installed的东西
-
版本冲突
-
分销升级是无法预测的混乱。认真。我已经失去了这些头发。
我强烈建议使用virtualenv
。无论在哪里开始都是一个巨大的痛苦,但是一旦你完成它,你就可以在完全控制下拥有一个完整的Python环境。这确实意味着更多的工作(你必须检查更新的东西,pip
还没有真正的帮助)但你不必担心Ubuntu正在做什么。
我有一个每个站点的环境(只是坐在一个名为venv
的子目录中)。有些人 – 包括我,曾经一度 – 喜欢在多个站点之间共享他们的环境。我发现在发布更新方面更容易维护,但有些网站可能很脆弱或需要旧版本,并且可以保留整个环境。因人而异。
在安装这个方面,只是为了打击我,virtualenv
不是为Python 3打包的,所以我们必须使用pip3
:
$ sudo pip3 install virtualenv
...
$ virtualenv-3.3 myenv
Using base prefix '/usr'
New python executable in myenv/bin/python3
Also creating executable in myenv/bin/python
Installing setuptools, pip...done.
$ source myenv/bin/activate # This is important!
您的bash PS1现在应该预先加上(myenv)
,以告知您处于不同的环境中。我们可以测试环境以检查我们是否使用了正确的版本(不使用系统版本的初学者):
$ python --version
Python 3.3.2+
$ which python pip
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
然后你可以继续,好像你是宇宙的主人。您不再需要root来使用pip
,也不需要指定pip3
。它更加友好。
$ pip install django umemcache
...
如果您使用类似uwsgi
的东西来托管它(您应该)使用它的-H标志(或home配置参数)来告诉它Python环境的位置。
至于使开发更容易,您可以自动”mount”您的virtualenv
环境。有很多脚本,但这个是我的(它位于我的~/.bashrc
的底部:
export VENVDIR="/web"
export VENVDIR_VENV="$VENVDIR/venv"
venvcd() {
wd=$(pwd)
[[ $wd == $VENVDIR/* || $wd == $VENVDIR ]] && wasin=true || unset wasin
builtin cd "$@"
wd=$(pwd)
if [[ $wd == $VENVDIR/* || $wd == $VENVDIR ]]; then
source $VENVDIR_VENV/bin/activate
else
[ $wasin ] && deactivate
fi
}
alias cd="venvcd"
cd .
每当我将cd
转换为/web
(存储我的所有开发网站)时,它都会为我安装virtualenv。请注意,我的所有网站只有一个环境,因此只有在您执行类似操作时才会为您提供服务。有many other ways of doing similar things。
次佳解决方法
我想通过pip
如何做到这一点。结果我需要pip3
:
sudo pip3 install Django
做了伎俩。
您可能需要通过以下方式获取pip3:
sudo apt-get install python3-pip
第三种解决方法
最近添加了Django for Python3。所以只需输入一个终端:
apt-get install python3-django
第四种方法
使用virtualenvwrapper是一种简单的方法,这是迄今为止最简单的在Ubuntu /Debian中管理Python 2.7 /3.x虚拟环境的方法。
$ sudo apt-get install python3 virtualenvwrapper
$ mkvirtualenv <venv> -p python3
$ workon <venv> # sets into the virtualenv from any terminal.
(可选)启用--system-site-packages
以重用全局站点包。 virtualenv安装了pip和其他python设置工具,以帮助我们快速入门。
$ pip install Django
$ pip install -r requirements.txt