Python 语言一直是一个很好的工具,得益于它的简单清晰,在计算机尤其是互联网的很多领域得到了广泛应用,最近很火的深度学习更是让许多人认识了这么一门语言。现代的 Linux 版本和 macOS 都默认安装了一个 Python 解释器,然而遗憾的是由于大量 Python 代码是由 Python 2.7 所写,因此即使 Python 3 已经正式发布了这么多年,在应用领域依然是 Python 2.7Python 3 共存的局面。由于之前在学校学习使用过 Python 3,而现在使用的 macOS 默认安装的是 Python 2.7,因此我决定使用 pyenvvirtualenv 来安装一个最新的 Python 3 开发环境。

关于 pyenvvirtualenv 的功能,stackoverflow 的这个答案很清晰了解释了它们各自的用途:pyenv 用于管理本机系统上的 Python 版本,virtualenv 用于管理 python 包(library)的版本

pyenv

首先安装 pyenv. 我的系统是 macOS,已经安装了 Homebrew,在命令行执行:

$ brew install pyenv

成功安装 pyenv 后,接着输入:

$ pyenv install -l

查看当前可以安装的 Python 版本。目前稳定发布版本最新的是 Python 3.6.1,因此输入:

$ pyenv install 3.6.1

当安装完成后,Python 3.6.1 就被安装到 /usr/local/Cellar/python3/3.6.1 目录下。

virtualenv

接下来安装 virtualenv. virtualenv 是一个 Python 写的工具,目前比较流行的 Python 包安装工具是 pip,因此在命令行里输入(如未安装 pip,请先安装 pip):

$ pip install virtualenv

来安装 virtualenv.

假如说你的项目在 ~/python_projects 目录下,

$ cd ~/python_projects
$ virtualenv --python=/usr/local/Cellar/python3/3.6.1/bin/python3.6 python3.6.1

此时,virtualenv 会在 ~/python_projects 目录下创建一个名为 python3.6.1 的目录,并安装相应的文件,大致的目录内容如下:

  • bin
  • include
  • lib
  • .Python@ -> /usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/Python

其中最后一个是一个指向实际 Python 解释器的软链接。

进入到这个目录,并且激活这个环境:

$ cd python3.6.1
$ source bin/activate.fish

由于我的终端使用的是 fish,因此创建这个环境时自动生成了 fish 脚本,不同的 shell 环境应该生成不同的脚本。

Django

由于我准备用 Django 框架做点东西,因此接下来安装 Django

$ pip install django

很简单,没啥可说的。但是需要注意的是,安装 Django 或者想要使用特定版本的 Python 最好是安装完并且激活 virtualenv 后,在相应的环境中操作,否则在未激活想要使用的环境的情况下直接安装,可能在后续的使用上出现问题。例如,由于 Django 兼容 Python 2Python 3,且 macOS 上默认使用 Python 2.7,直接安装的话将会安装到 Python 2.7 对应的路径里。

接下来创建一个 Django 项目并运行,测试是否已经正确配置环境:

$ django-admin startproject mysite
$ python manage.py runserver

如果没有问题,终端里可能会输出类似的提示:

Performing system checks...

System check identified no issues (0 silenced).

You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

May 29, 2017 - 09:59:11
Django version 1.11.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

打开浏览器,输入 http://127.0.0.1:8000 就可以查看了。

总结

上面就是一个 Python/Django 开发环境的基本安装配置情况,由于 macOS 依然大量依赖 Python 2.7,因此,使用 pyenvvirtualenv 来控制使用的 Python 版本而不直接将系统版本设置为 Python 3 有利于减少出问题的可能性,推荐使用。

参考

  • https://docs.djangoproject.com/en/1.11/intro/tutorial01/
  • http://zmrenwu.com/post/3/