django开发环境部署(一)

山有山的高度,水有水的深度,没必要攀比;风有风的自由,云有云的温柔,没必要模仿。你认为快乐的,就去寻找;你认为值得的,就去守候;你认为是幸福的,就去珍惜。没有不被评说的事,没有不被猜测的人。别太在乎别人的看法,做最真实的最朴实的自己,依心而行。才能无憾今生

之所以写这篇文章的原因在于 django 环境的确轻松搭建,之前 Ubuntu 上安装了,的确很轻松,但是后期我才知道随便做个环境出来很容易到了后面很麻烦,污染了系统里的 python 版本,导致系统 python 环境异常崩溃,系统重装的 Ubuntu 的亲们你们是有感触吧,所以好多人采用 virtualenv 吧,但是期初用 virtualenv 的时候的确不需要系统的依赖包了,但是后来折腾来折腾去还是很麻烦,最后我不得已我又各种删,所以最后看到了一个哥们的文章,我才觉得找到了自己自己想要的东西了

所以重头再 mac 下已默认 python 2.7.5 为系统 python 系统版本,完全独立出来的虚拟环境,方便删除,挪动,更改环境中的各组件版本,也许我有轻微强迫症的人。不污染系统环境,不依赖于系统的 package,完全独立的 python 版本,独立的django 版本,独立的 django 依赖包,所以马上从头开始

一、安装 pip

在python中可以使用easy_install和pip安装python拓展但推荐使用pip,在stackoverflow看到个帖子,阐明了理由

Don't use easy_install, unless you like stabbing yourself in the face. Use pip.
Two reasons, there may be more:
- pip provides an uninstall command
- if an installation fails in the middle, pip will leave you in a clean state.

1.1 pip 简介

Pip 是安装 python 包的工具,提供了安装包,列出已经安装的包,升级包以及卸载包的功能。
Pip 是对 easy_install 的取代,提供了和 easy_install 相同的查找包的功能,因此可以使用 easy_install 安装的包也同样可以使用pip进行安装。

Pip 的安装可以通过源代码包,easy_install 或者脚本。

因为easy_install:
$ easy_install pip

也可以通过这样的方式安装
# sudo apt-get install python-pip python-dev build-essential

1.2 pip 使用

安装 package
$ pip install Markdown

列出安装的packages
$ pip freeze

安装特定版本的package
通过使用==, >=, <=, >, <来指定一个版本号。
$ pip install Markdown<2.0
$ pip install -v Markdown==2.3
$ pip install Markdown>2.0,<2.0.3

升级包
升级包到当前最新的版本,可以使用-U 或者 --upgrade
$ pip install -U Markdown

卸载包
$ pip uninstall Markdown

查询包
pip search Markdown

更多详情
pip help

国内碰到最多的问题,就是源连接超时之类的,所以下面这些方法都是针对这些情况下的

走代理
pip install --proxy="http://domain\username:pwd@xxx.xxx.xxx.xxx:80" Markdown

如果没有代理,直接换个源下载吧,具体的源信息可以在参考链接里的 pypi mirror 里找到,找到 CN 的就可以了
pip install bpython --trusted-host e.pypi.python.org
pip install bpython -i e.pypi.python.org/sample

二、安装virtualenv

$ sudo pip install virtualenv

使用方法:
1、创建虚拟环境
$ virtualenv env1 //创建虚拟环境env1

默认情况下,虚拟环境会依赖系统环境中的 site packages,就是说系统中已经安装好的第三方 package 也会安装在虚拟环境中,如果不想依赖这些 package ,那么可以加上参数 --no-site-packages 建立虚拟环境,可以用下面命令查看 package 安装位置

# python -c "from distutils.sysconfig import get_python_lib;print(get_python_lib())"
/usr/lib/python2.7/dist-packages //Ubuntu下的路径
/Library/Python/2.7/site-packages //mac下的路径

$ virtualenv env2 --no-site-package

这条命令安装完了之后site package就会安装到创建好的虚拟环境中,这样就实现了独立于系统之外,不污染系统了

2、启用虚拟环境

cd env1
source ./bin/activate

注意此时命令行会多一个(env1),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去。

3、退出虚拟环境

deactivate

4、在虚拟环境中安装python module

pip install [套件名称]

Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:

如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在 ~/.bashrc 文件中加上:

export PIP_REQUIRE_VIRTUALENV=true

或者让在执行pip的时候让系统自动开启虚拟环境:

export PIP_RESPECT_VIRTUALENV=true

三、安装 virtualenvwrapper

Virtaulenvwrapper 是 virtualenv 的扩展包,用于更方便管理虚拟环境,它可以做:

  • 将所有虚拟环境整合在一个目录下
  • 管理(新增,删除,复制)虚拟环境
  • 快速切换虚拟环境
  • tab 补全虚拟环境名字
  • 每個操作都提供允许使用者自己定制的 hooks
  • 可以编写比较容易分享的 extension plugin

安装

$ sudo pip install virtualenvwrapper

此时还不能使用 virtualenvwrapper,默认 virtualenvwrapper 安装在 /usr/local/bin 下面,实际上你需要运行 virtualenvwrapper.sh 文件才行

配置.bashrc

alias python="python2.7"

如果你的系统 python 安装的位置不是默认位置,请加上环境变量申明

PATH=${PATH}:/usr/local/share/python
#virtualenvwrapper
export WORKON_HOME=$HOME/virtualenvs //虚拟环境存放位置自己指定
source /usr/local/bin/virtualenvwrapper.sh //指定virtualenvwrapper的执行文件路径
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7 //系统python2.7执行文件位置,根据自己环境而定
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' //启动时候指定参数,就是我们用的独立于系统的安装包
export PIP_VIRTUALENV_BASE=$WORKON_HOME //告知pip virtualenv的位置
export PIP_RESPECT_VIRTUALENV=true //执行pip的时候让系统自动开启虚拟环境

如果是 mac 用户,由于 Terminal 在启动时加载的用户配置并非 .bashrc,而是 ~/.bash_profile,所在还需要在 ~/.bash_profile 加入
[ -r ~/.bashrc ] && source ~/.bashrc

使用方法
1、列出虚拟环境列表

workon

lsvirtualenv

2、新建虚拟环境

mkvirtualenv [虚拟环境名称]

3、启动\切换虚拟环境

workon [虚拟环境名称]

4、复制虚拟环境

$ cpvirtualenv ENVNAME TARGETENVNAME

5、删除虚拟环境

rmvirtualenv [虚拟环境名称]

6、离开虚拟环境

deactivate

四、安装 pythonbrew

对于日后想用不同的版本 python 进行代码测试的话自然少不了这个,接下来的内容中加上这部分

五、安装辅助组件

yolk是一个列出python安装包的工具

$ pip install yolk` 
$ yolk -l

六、安装django

#安装
ms@mss:~$ workon test
(test)ms@mss:~$ pip install django

#django安装的位置
python -c "import sys; sys.path = sys.path[1:]; import django; print(django.__path__)"
['/home/ms/.virtualenvs/test/local/lib/python2.7/site-packages/django'] \\这里就是我虚拟环境中

到此本地的开发 django 环境也就安装完了,这样独立的开发环境,pythonbrew 安装的 python 版本,不依赖于系统,完全独立,直接删除没有任何影响,或者直接拷贝虚机环境修改里面的 python 版本和 django 版本就可以进行另外的测试了,和系统环境无关联,达到了我想要的结果,就不至于乱折腾系统了,我直接乱折腾虚拟环境

参考阅读