Python linux多版本共存以及虚拟环境管理(转摘)
此时需要在系统中安装多个Python,但又不能影响系统自带的Python,即需要实现Python的多版本共存。 pyenv就是这样一个Python版本管理器。
安装pyenv
- $ git clone git://github.com/yyuu/pyenv.git ~/.pyenv现在是这个地址: https://github.com/pyenv/pyenv.git
- $ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
- $ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
- $ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
- $ exec $SHELL -l
安装Python
查看可安装的版本
$ pyenv install --list
该命令会列出可以用pyenv安装的Python版本,仅列举几个:
- .7.8 # Python 2最新版本
- .4.1 # Python 3最新版本
- anaconda-4.0.0 # 支持Python 2.6和2.7
- anaconda3-4.0.0 # 支持Python 3.3和3.4
其中形如 x.x.x 这样的只有版本号的为Python官方版本,其他的形如 xxxxx-x.x.x 这种既有名称又有版本后的属于“衍生版”或发行版。
安装Python的依赖包
在安装Python时需要首先安装其依赖的其他软件包,已知的一些需要预先安装的库如下。
在CentOS/RHEL/Fedora下:
- sudo yum install readline readline-devel readline-static
- sudo yum install openssl openssl-devel openssl-static
- sudo yum install sqlite-devel
- sudo yum install bzip2-devel bzip2-libs
安装指定版本
使用如下命令即可安装python 3.4.1:
$ pyenv install 3.4.1 -v
该命令会从github上下载python的源代码,并解压到/tmp目录下,然后在/tmp中执行编译工作。若依赖包没有安装,则会出现编译错误,需要在安装依赖包后重新执行该命令。
如果网络不太好,用pyenv下载会比较慢,可以先执行该命令,然后到 ~/.pyenv/cache 目录下查看要下载的文件的文件名,然后自己到官方网站下载,并将文件放在 ~/.pyenv/cache 目录下(~/.pyenv/cache/ 一般需要手动创建)。pyenv会检查文件的完整性,若确认无误,则不会再重新下载。
对于科研环境,更推荐安装专为科学计算准备的Anaconda发行版, pyenv install anaconda-4.0.0 安装Python 2.x版本, pyenv install anaconda3-4.0.0 安装Python 3.x版本;
查看当前已安装的python版本
- $ pyenv versions
- * system (set by /home/seisman/.pyenv/version)
- .4.1
其中的星号表示当前正在使用的是系统自带的python。
设置全局的python版本
- $ pyenv global 3.4.1
- $ pyenv versions
- system
- * 3.4.1 (set by /home/seisman/.pyenv/version)
当前全局的python版本已经变成了3.4.1。也可以使用 pyenv local 或 pyenv shell 临时改变python版本。
确认python版本
- $ python
- Python 3.4.1 (default, Sep 10 2014, 17:10:18)
- [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
- Type "help", "copyright", "credits" or "license" for more information.
- >>>
使用python
- 输入 python 即可使用新版本的python;
- 系统自带的脚本会以 /usr/bin/python 的方式直接调用老版本的python,因而不会对系统脚本产生影响;
- 使用 pip 安装第三方模块时会安装到 ~/.pyenv/versions/3.4.1 下,不会和系统模块发生冲突。
- 使用 pip 安装模块后,可能需要执行 pyenv rehash 更新数据库;
- yenv version #显示当前使用的
- Python pyenv which python #显示当前Python的安裝路径
- pyenv global <version> #设置默认的Python版本
- pyenv local <version> #在当前路径创建一个.python-version,以后进入这个目录自动切换为该版本
- pyenv shell <version> #在当前shell的session中启用某个Python版本,优先级高于global,local
参考https://github.com/yyuu/pyenv
虚拟环境的搭建
1.1.1介绍
virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:
1. 在没有权限的情况下安装新套件
2. 不同应用可以使用不同的套件版本
3. 套件升级不影响其他应用
1.1.2安装
sudo apt-get install python-virtualenv
1.1.3 使用方法
virtualenv [虚拟环境名称]
如,创建**ENV**的虚拟环境
virtualenv ENV
默认情况下,虚拟环境会依赖系统环境中的site packages,就是说系统中已经安装好的第三方package也会安装在虚拟环境中,如果不想依赖这些package,那么可以加上参数 --no-site-packages建立虚拟环境
virtualenv --no-site-packages [虚拟环境名称]
启动虚拟环境
cd ENV
source ./bin/activate
注意此时命令行会多一个(ENV),ENV为虚拟环境名称,接下来所有模块都只会安装到该目录中去。
退出虚拟环境
deactivate
在虚拟环境安装Python套件
Virtualenv 附带有pip安装工具,因此需要安装的套件可以直接运行:
pip install [套件名称]
如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc文件中加上:
export PIP_REQUIRE_VIRTUALENV=true
或者让在执行pip的时候让系统自动开启虚拟环境:
export PIP_RESPECT_VIRTUALENV=true
1.2 Virtualenvwrapper
1.2.1介绍
Virtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:
1. 将所有虚拟环境整合在一个目录下
2. 管理(新增,删除,复制)虚拟环境
3. 切换虚拟环境
4. ...
1.2.2 安装
sudo easy_install virtualenvwrapper
此时还不能使用virtualenvwrapper,默认virtualenvwrapper安装在/usr/local/bin下面,实际上你需要运行virtualenvwrapper.sh文件才行,先别急,打开这个文件看看,里面有安装步骤,我们照着操作把环境设置好。
1.创建目录用来存放虚拟环境
mkdir $HOME/.virtualenvs
2.在~/.bashrc中添加行: export WORKON_HOME=$HOME/.virtualenvs
3.在~/.bashrc中添加行:source /usr/local/bin/virtualenvwrapper.sh
4.运行: source ~/.bashrc
1.2.3 使用
此时virtualenvwrapper就可以使用了。
点击(此处)折叠或打开
1. 列出虚拟环境列表
2. workon
3.
4. 也可以使用
5. lsvirtualenv
6.
7. 新建虚拟环境
8. mkvirtualenv [虚拟环境名称]
9.
10. 启动/切换虚拟环境
11. workon [虚拟环境名称]
12.
13. 删除虚拟环境
14. rmvirtualenv [虚拟环境名称]
15.
16. 离开虚拟环境
17. deactivate
pyenv 安装python 3.7.0时,报编译出错,需要:yum -y install libffi-devel。 别的依赖包基本都装了,所以添加这一个就行了。有的还需要:
yum upgrade
Python linux多版本共存以及虚拟环境管理(转摘)的更多相关文章
- Python - 多版本共存与虚拟独立环境
背景 利用pip直接在本地python环境安装包,基本上都安装到了site_package目录下面. 随着安装的包越来越多,依赖关系也就越来越复杂.不同的项目之间,依赖关系也会出现版本冲突的问题. 此 ...
- Python/Anaconda多版本共存的解决方案
博客中的文章均为 meelo 原创,请务必以链接形式注明 本文地址 虽然Python2大势已去,众多项目都已经支持Python3,但总有一些教程和项目只支持Python2.通常情况是计算机里既装着Py ...
- Windows 下让 Python 多个版本共存(支持 pip)
转载自 http://blog.kgzx.net/index.php/archives/40/ 因为类库兼容性的关系,写实际项目时都是用 Python 2,但自己试验性的写点小东西还是喜欢用 Pyth ...
- python基础-python解释器多版本共存-变量-常量
一.编程语言的发展史 机器语言-->汇编语言-->高级语言,学习难度及执行效率由高到低,开发效率由低到高 机器语言:二进制编程,0101 汇编语言:用英文字符来代替0101编程 高级语言: ...
- Python 起步 多版本共存配置
上次我选择的是py2.x,如果我要再装一个py3.x呢 我们去设置环境变量,然后去命令行输入python,这里我故意把环境变量放在第一行,貌似换成3.7了 我们把2.7的放在3.7的前面呢?又换回去了 ...
- Linux系统之路——python多版本共存问题(ps:自行切换python版本,pip安装遇到的一些问题)
经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...
- Python多版本共存之pyenv
经常遇到这样的情况: 系统自带的Python是2.6,自己需要Python 2.7中的某些特性: 系统自带的Python是2.x,自己需要Python 3.x: 此时需要在系统中安装多个Python, ...
- Python多版本共存管理工具之pyenv
目录 Table of Contents 1. 安装pyenv 2. 安装Python 3.0 使用python 参考 Table of Contents 经常遇到这样的情况: 系统自带的Python ...
- Python 多版本共存之pyenv
经常遇到这样的情况: 系统自带的 Python 是 2.6,自己需要 Python 2.7 中的某些特性: 系统自带的 Python 是 2.x,自己需要 Python 3.x: 此时需要在系统中安装 ...
随机推荐
- Dubbo 在maven项目中的应用
首先我们来看一下dubbo的架构: 所以通过此图,我们看到就是服务的提供者将服务注册到注册中心,服务的消费者从注册中心获取服务,monitor监控服务的调用. 关于dubbo的使用,我们举个简单的例子 ...
- spring-boot-actuator报错Full authentication is required to access this resource
解决办法[设置端点访问 ]: 1, 关闭验证 management.security.enabled=false 2,开启HTTP basic认证 - 添加依赖 <dependency> ...
- IDEA2018.2破解方法
前言 之前也试过多种方式,但是总是使用了一会儿又需要破解,今天又找了一个,不知道可以使用多久. 目前看是可以破解开的,所以分享一下. 适用于JetBrain旗下版本为2.3或2.4的所有产品 一.在 ...
- Spark SQL configuration
# export by: spark.sql("SET -v").show(n=200, truncate=False) key value meaning spark.sql.a ...
- 《Spring实战》学习笔记-第五章:构建Spring web应用
之前一直在看<Spring实战>第三版,看到第五章时发现很多东西已经过时被废弃了,于是现在开始读<Spring实战>第四版了,章节安排与之前不同了,里面应用的应该是最新的技术. ...
- Tensorflow一些常用基本概念与函数
1.tensorflow的基本运作 为了快速的熟悉TensorFlow编程,下面从一段简单的代码开始: import tensorflow as tf #定义‘符号’变量,也称为占位符 a = tf. ...
- Linux系统挂载windows共享目录报错mount error(121):remote error I/O error
经查,这是由于NFS(Network File System)即网络文件系统服务器有多个版本,V2.V3.V4.而且各版本同时运行,因此挂载时需要说明版本号 mount -o username='pk ...
- js版的in_array的实现方法
这是一个JS版的判断数组内的元素的方法. var arr = ['a','b','c']; console.log(in_array('b',arr)); // true function in_ar ...
- TemplateBuilder Android Studio
TemplateBuilder:是Android Studio的一个开发模板,大大提高开发效率.
- 【2】static 、construct
[面向对象] 两个概念: 什么是类 具有一批相同属性的集合 什么是对象 特指的某一个具体的事物 [面向对象的三大特征] 1.封装 public 公共的 protected 受保护的 private 私 ...