如何为 Python 3.x 安装 Django?

Jon*_*han 33 django python3

我使用以下命令安装了 Django:

sudo apt-get install python-django
Run Code Online (Sandbox Code Playgroud)

它安装了 1.5.4-1ubuntu1 版本。Django 文档说,从 1.5 版开始,Django 支持 Python 3。然而,当我运行 python 3 解释器并尝试导入 Django 时,它说没有这样的模块。我尝试寻找 python3 版本的 Django,但不存在这样的包。我怎样才能让 django 在 python3 上工作?我更喜欢使用 ubuntu 包而不是手动安装。

Oli*_*Oli 38

我强烈建议避免pip3在系统站点包中安装东西。我之前已经提出过这些论点,但我会给你注释:

  • 系统更新打破了一切
  • 安装 apt 包可以覆盖 pip 安装的东西
  • 版本冲突
  • 分销升级是不可预知的混乱。严重地。我已经因为这些掉头发了。

我强烈主张使用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!
Run Code Online (Sandbox Code Playgroud)

你的 bash PS1 现在应该预先(myenv)准备好让你知道你在不同的环境中。我们可以测试环境以检查我们使用的是正确版本的东西(不使用系统版本的初学者):

$ python --version
Python 3.3.2+
$ which python pip 
/home/oli/Desktop/myenv/bin/python
/home/oli/Desktop/myenv/bin/pip
Run Code Online (Sandbox Code Playgroud)

然后你就可以继续,就好像你是宇宙的主人一样。您不再需要 root 用户,pip也不需要指定pip3. 它只是更加友好。

$ pip install django umemcache
...
Run Code Online (Sandbox Code Playgroud)

如果你使用类似的东西uwsgi来承载它(你应该)使用它的 -H 标志(或 home 配置参数)来告诉它 Python 环境所在的位置。

至于使开发更容易,您可以自动“挂载”您的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 .
Run Code Online (Sandbox Code Playgroud)

每当我cd进入/web(存储我所有开发网站的地方)时,它都会为我安装 virtualenv。请注意,我的所有站点只有一个环境,因此只有在您执行类似操作时才会适合您。有许多其他方法可以做类似的事情


Jon*_*han 18

我想出了如何使用pip. 原来我需要pip3

sudo pip3 install Django
Run Code Online (Sandbox Code Playgroud)

成功了。

您可能需要通过以下方式获取 pip3:

sudo apt-get install python3-pip
Run Code Online (Sandbox Code Playgroud)