Linux——Django 开发环境部署(二)python版本控制器pyenv
python版本控制器pyenv
之前的 那篇是说明了django环境的site package完全独立出来了,但是使用的python解释器还是系统的,为了继续独立出来,甚至是达到ruby的rvm的自由切换解释器版本,那样不更 好,日后线上升级python版本的时候直接再本地切换版本来运行当前代码测试岂不快哉,其实本篇已经不能算django开发环境了,是python开发 环境部署
在上篇的基础上,继续进行解释器的版本管理器的安装,这里我使用的时pyenv,另外一个管理器是pythonbrew,还有一个pythonz,至于为什么选择pyenv,pythonbrew的GitHub主页上给出了解释如下
英文翻译水平太烂,只能搬原文
Deprecated
This project is no longer under active development.
You are encouraged to try out pyenv instead.
为什么选用pyenv
Depend on Python itself. pyenv was made from pure shell scripts. There is no bootstrap problem of Python.
Need to be loaded into your shell. Instead, pyenv's shim approach works by adding a directory to your $PATH.
Manage virtualenv. Of course, you can create virtualenv yourself, or pyenv-virtualenv to automate the process.
这个项目目前已经在慢慢取代了pythonbrew,GitHub主页 https://github.com/yyuu/pyenv
step1:简介
pyenv lets
you easily switch between multiple versions of Python. It's simple,
unobtrusive, and follows the UNIX tradition of single-purpose tools that
do one thing well.
This project was forked from rbenv and ruby-build, and modified for Python.
step2:功能
Let you change the global Python version on a per-user basis.
Provide support for per-project Python versions.
Allow you to override the Python version with an environment variable.
Search commands from multiple versions of Python at a time. This may be helpful to test across Python versions with tox.
step3:安装
基于GitHub的安装
This will get you going with the latest version of pyenv and make it easy to fork and contribute any changes back upstream.
1、克隆仓库
$ cd
$ git clone git://github.com/yyuu/pyenv.git .pyenv
2、指明环境变量
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
3、开启shims and autocompletion
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
4、重新启动shell让其生效
$ exec $SHELL
5、这时候就可以安装另外版本的python了
#这里会在$PYENV_ROOT/versions下生成一个目录
$ pyenv install 2.7.6
6、重构shim,利用pyenv安装完新version的py还是利用安装完新site package都需要执行这个操作
$ pyenv rehash
7、升级pyenv
#升级到最新版 $ cd ~/.pyenv $ git pull
#升级到指定版本 $ cd ~/.pyenv $ git fetch
$ git tag v0.1.0
$ git checkout v0.1.0
8、卸载指定py版本
通用方法
cd ~/.pyenv/versions
pyenv uninstall
暴力做法
rm -rf $pyversion
如果是mac平台
$ brew update
$ brew install pyenv //安装
$ brew upgrade pyenv //升级
#安装完成之后
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile //只需要执行一次即可
step4:使用
$ pyenv commands //列出可以使用的命令
$ pyenv install 3.4.0
$ pyenv version //查看当前的python version
$ pyenv versions //列出pyenv安装的所有组件,包括site package
$ pyenv which python3.4 //列出给定的python version可执行文件位置
$ pyenv whence 2to3 //列出pyenv安装的python version
$ pyenv install --list //列出所有可以安装的包括python version,pypy等
$ pyenv rehash //Run this command after you install a new version of Python, or install a package that provides binaries.
$ pyenv uninstall //卸载
#下面关于pyenv local和pyenv global是两个重要命令 稍后做出单独使用的解释
step5:整合virtualenv
这个pyenv设计了插件来整合了virtualenv甚至还人性化的推出了virtualenvwrapper
1、安装
$ git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
$ exec "$SHELL" #上面会把最近版本安装到~/.pyenv/plugins/pyenv-virtualenv目录
#mac下的安装
$ brew install pyenv-virtualenv
2、使用
$ pyenv virtualenv 2.7.6 venv-2.7.6 //创建一个使用2.7.6版本的解释器的名称为my-virtual-env-2.7.6虚拟环境,存放在~/.pyenv/versions
$ pyenv virtualenv 3.4.0 venv-django1.6-3.4.0 //同理创建一个3.4解释器的虚拟环境,就是前面我需要的完全独立的测试环境
#这里有个注意的地方这里的解释器必须是通过pyenv安装的解释器,如果不加参数,如下
$ pyenv virtualenv django1.6 //那么这里会使用系统的python version创建虚拟环境,如果需要加参数,就必须是pyenv安装的版本
#激活虚拟环境,这个虚拟环境必须是pyenv创建存在的
$ pyenv activate venv33
#退出虚拟环境
$ pyenv deactivate
\\当然依旧可以使用deactivate,但是这里不推荐的原因是采用deactivate之后仍旧是需要自己取消pyenv local的设定的,假设之前已经设定
,关于pyevn的shell,local、global,会单独写出来说明
Linux——Django 开发环境部署(二)python版本控制器pyenv的更多相关文章
- Linux——Django 开发环境部署(一)
Django 开发环境部署(一) 之所以 写这篇文章的原因在于django环境的确轻松搭建,之前Ubuntu上安装了,的确很轻松,但是后期我才知道随便做个环境出来很容易到了后面很麻烦,污 染了系统里的 ...
- Delphi 10.2 Linux 程序开发环境部署的基本步骤(网络连接方式要选择桥接或者是Host Only)
Delphi 10.2 Linux 程序开发环境部署的基本步骤 http://blog.qdac.cc/?p=4477 升級到 Delphi 10.2 Tokyo 笔记http://www.cnblo ...
- django开发环境部署之pip、virtualenv、virtualenvwrapper
step1:安装pip 在python中可以使用easy_install和pip安装python拓展但推荐使用pip Don't use easy_install, unless you like s ...
- 虚拟机上的Linux Java开发环境部署记录(VirtualBox+Ubuntu)第一章-基础环境搭建
创建虚拟机时需注意三点: 在BIOS中开启Intel VT,以支持64位虚拟机系统: 对于Ubuntu 16以上版本,至少分配10G以上初始控件. 增加一块网卡,选择Host-Only网络,用于主机和 ...
- 西秦的ACE-Python教程 一、Python本地开发环境部署
西秦的ACE-Python教程 一.Python本地开发环境部署 西秦 级别: 论坛版主 发帖 1357 云币 2782 加关注 写私信 只看楼主 更多操作楼主 发表于: 10-10 ...
- linux 下 ifcfg-eth0 配置/CentOS_minimal安装和开发环境部署
CentOS_minimal安装和开发环境部署:http://www.th7.cn/system/lin/201305/39002.shtml 网络接口配置文件 [root@localhost ~]# ...
- Eclipse for Python开发环境部署
Eclipse for Python开发环境部署 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大且开源免费 ...
- django开发环境搭建(参考流程)
django开发环境搭建(参考流程) 2013-08-08 01:09:06 分类: LINUX 原文地址:django开发环境搭建(参考流程) 作者:bailiangcn 对于一个初学者,在实际的开 ...
- 一个CentOS7的开发环境部署,包括防火墙|VPN|多IP多网关|HTTP代理服务器设置等
http://www.lenggirl.com/code/centos7.html layout: post title: "一个CentOS7的开发环境部署,包括防火墙|VPN|HTTP代 ...
随机推荐
- 借教室(NOIP2012)
原题传送门 其实就是求能满足多少个订单.. 然后搞上差分, 又因为如果前n个能够满足,那么前m个一定能满足(m<n) 所以可以二分(重点!) 然后乱搞..就AC了(其实也挺麻烦的...233~) ...
- Synthesis of memory barriers
A framework is provided for automatic inference of memory fences in concurrent programs. A method is ...
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---57
以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:
- usb驱动---What is the difference between /dev/ttyUSB and /dev/ttyACM【转】
转自:http://blog.csdn.net/ppp2006/article/details/25654733 https://www.rfc1149.net/blog/2013/03/05/wha ...
- 8.OpenStack网络组件
添加网络组件 安装和配置控制器节点 创建数据库 mysql -uroot -ptoyo123 CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neut ...
- HTML,DIV+CSS,js,JQ,UI-WEB前端设计经验
目前比较全的CSS重设(reset)方法总结 在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览 ...
- 【linux高级程序设计】(第十二章)Linux多线程编程 3
条件变量通信机制 条件变量必须配合互斥锁一起实现对资源的互斥访问 使用方法: int pthread_cond_init (pthread_cond_t *__restrict __cond, __c ...
- Fiddler抓包11-HTTPS证书Actions无法导出问题【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/fiddler/ 前言 在点Actions时候出现Export Failed:The r ...
- validate插件实现表单效验(一)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- logrotate 学习使用
logrotate Summary : Rotates, compresses, removes and mails system log files Description : The logrot ...