Pyenv管理Python及虚拟环境

1. Pyenv管理Python多版本环境

1.1 安装git
sudo apt-get update
sudo apt-get install git 
git --version
1.2 安装rz
1》ubuntu系统下,rz/sz命令安装方式如下:
apt-get install lrzsz
2》使用说明
sz命令 发送文件到本地:
# sz filename 
rz命令 将本地上传文件到服务器
#####rz
执行该命令后,在弹出框中选择要上传的文件即可。

参考 https://blog.csdn.net/sxingming/article/details/60870951

1.3 Linux安装Pyenv
  • 安装依赖
    在安装Pyenv之前,我们需要先把Python的依赖项装好,如下所示:
$ sudo apt-get install libc6-dev gcc
$ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm
  • 下载Pyenv的源码
git clone https://github.com/pyenv/pyenv.git ~/.pyenv

在这里是把Pyenv下载下来后,放到了 ~ 家目录下,起名为 .pyenv 的隐藏目录中。这只是一个官方比较推荐的位置,实际上你可以自行选择把你的 .pyenv 目录放到任何位置。
在下载完毕之后,还需要配置一下Pyenv的环境变量以及Pyenv启动的语句:

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

如果你是使用的 zsh,那么需要把 ~/.bashrc 修改为 ~/.zshenv,按照系统的不同,可能还需要修改为 ~/.bash_profile。

如果你修改了 .pyenv 的位置,那么你还要将上面命令中的对应路径进行修改。

配置完毕之后重启 shell 即可生效:

exec "$SHELL"
  • 换源安装
因为pyenv默认会从Python官网下载压缩包,因为众所周知的原因,国内访问Python官网不稳定,因此在下载过程中会非常慢,解决该问题有两个办法:
1. 手动将Python压缩包下载到~/.pyenv/cache/目录下,pyenv会校验md5值和完整性,确认无误的话就不会重新下载直接从这里安装;这里有个需要注意的地方,需要把下载的Python压缩包后缀名由.tgz修改为.tar.gz(切记不能采用把.tgz解压之后再压缩成.tar.gz 的方式,因为这样的话会导致源文件的md5值发生变化而校验失败重新下载。)
2. 直接修改pyenv配置文件,将Python下载地址修改为国内Python镜像源地址,在此,推荐第二种方法,我这里使用的是sohu的镜像源;修改~/.pyenv/plugins/python-build/share/python-build/目录下对应版本号文件,你需要安装哪个版本就修改哪个版本号,替换下载地址为sohu镜像源地址:
# cd ~/.pyenv/plugins/python-build/share/python-build/
# vim 3.6.5
  #install_package "Python-3.6.5" "https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz#f434053ba1b5c8a5cc597e966ead3c5143012af827fd3f0697d21450bb8d87a6" 
  install_package "Python-3.6.5" "http://mirrors.sohu.com/python/3.6.5/Python-3.6.5.tar.xz#f434053ba1b5c8a5cc597e966ead3c5143012af827fd3f0697d21450bb8d87a6" 
1.4 使用方式

配置完毕之后,就可以在命令行中使用 Pyenv 命令了,加上 -h 参数可以查看帮助和使用方式:

$ pyenv -h
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme

在这里我们讲解一下比较常用的一些命令的使用方式。

  • 查看和安装Python
    需要注意的一点是,Pyenv 仅能够管理由 Pyenv 自己安装的Python,也就是说如果你使用编译或其他方式安装的Python版本,将不会纳入 Pyenv 的管理。
    首先,我们来查看使用 Pyenv 能安装什么版本的Python:
$ pyenv install --list

使用此命令即可查看 Pyenv 能安装的所有版本,包括官方的Python、anaconda、pypy等。在这里,只有数字的,如 3.6.6 这种就是官方版本的Python。
选择好你要安装的Python版本之后,使用以下命令即可安装:

$ pyenv install 3.6.6

版本名字需要和上一条命令中查询到的一致。
依赖项这些都没有问题的话,一般输入命令等待安装成功即可,安装完成后,我们可以使用以下命令来查看纳入 Pyenv 安装的有哪些版本:

$ pyenv versions
* system (set by /Users/wnanbei/.pyenv/version)
  3.6.6
  3.7.1

这里的 system 则是系统本身的Python环境,而下方的 3.6.6 和 3.7.1 则是使用 Pyenv 安装的,带 * 的则是当前正在使用的Python环境。

  • 切换Python环境
    安装了多个Python版本之后,使用 Pyenv 可以非常快速便捷的在多个Python版本中切换,而不会造成冲突。其设定Python环境的方式也有几种。
  • 全局Python环境
    指定全局的Python环境一般用的比较少,如果你嫌每次都要用命令进入环境比较麻烦的话,那么你可以指定一个比较常用的Python版本作为全局的Python环境:
$ pyenv global 3.6.6
  • 局部Python环境
    除了全局环境之外,还可以给某个目录指定环境,也就是说,只要进入这个指定之后的目录,那么其所处的环境就是指定的Python版本了。
    指定之前,首先要使用 cd 命令进入要指定的目录,然后输入以下命令。
$ pyenv local 3.6.6
  • 如果要取消某个目录的Python环境,可以使用以下命令:
$ pyenv local --unset
  • 临时Python环境
    所谓的临时Python环境,与上面的全局和局部环境不同,只是当前有效,退出Shell之后,下次再进入还需要重新切换。输入以下命令进入临时Python环境:
$ pyenv shell 3.6.6

如果需要退出临时环境的话,使用以下命令:

$ pyenv shell --unset

这三种Python环境的优先级为:shell > local > global

  • pip安装库timeout
    pip安装库的时候,也会经常出现现在速度很慢或者timeout的状况,更换成国内镜像源即可解决问题
创建一个pip.conf文件
# mkdir ~/.pip
# vim ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com
2 安装 pyenv-virtualenv

git 地址:https://github.com/pyenv/pyenv-virtualenv

把插件克隆在刚才已经安装完毕的 pyenv 的 plugins 文件夹中

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

然后配置环境变量

如果你使用 bash,就执行如下命令:

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc

如果你使用 zsh,就执行如下命令:

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc

最后,在使用 pyenv 之前,重新初始化 shell 环境,执行如下命令

exec $SHELL

不执行该命令也是完全可以的,你可以关闭当前的终端窗口,重新启动一个就可以了。

到此,我们的所有重要安装已经全部完成了,可以开始体验了。
使用刚才安装的 python 3.6.6
首先我们需要明确一个概念,pyenv 和 pyenv-virtualenv 他们是如何协作的,你可以这么认为:

pyenv 托管 python 版本,virtualenv 使用 python 版本

好了,之前已经装好了版本,那么现在就来使用吧

第 1 步:创建虚拟环境
首先需要创建一个虚拟环境,执行命令:

pyenv virtualenv 3.6.6 my-env

它的格式就是这样固定的,最后一个是你自己想要的环境的名字,可以随便取。稍等片刻,你将会看到:

Looking in links: /tmp/tmp0eywgc7v 
Requirement already satisfied: setuptools in /home/joit/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (39.0.1) 
Requirement already satisfied: pip in /home/joit/.pyenv/versions/3.6.6/envs/my-env/lib/python3.6/site-packages (10.0.1)

类似于这样的回显信息,说明环境已经创建成功了,它还告诉了你,该虚拟环境的绝对路径,如果你进去看了,你就会发现,所谓的虚拟环境,就是把 python 装在 pyenv 的安装目录的某个文件夹中,以供它自己调用。

第 2 步:激活虚拟环境
在任意目录下,执行命令:

pyenv activate my-env

你会发现,在你的终端里面,多了一个类似于 (my-env) 这样的一个东西,这时候你如果执行:

python --version

那就是 python 3.6.6 了
2.退出虚拟环境

pyenv deactivate

3.pyenv 命令格式

Usage: pyenv <command> [<args>]


activate

commands 查看pyenv的命令大全 pyenv commands 
completions
deactivate
doctor
exec
global 显示和设置全局python版本 pyenv global [3.6.1]
help 显示pyenv帮助 pyenv [command] help
hooks
init
install  安装指定版本python pyenv install 3.6.1
installer
local 设置和显示本地python版本 python local 和 python local 3.6.1
offline-installer
prefix
rehash
root 
shell
shims
uninstall 卸载指定版本python python uninstall 3.6.1
update  更新pyenv版本 pyenv update 
version  列出本地使用的python版本 pyenv version
--version 列出pyenv版本 pyenv --version
version-file
version-file-read
version-file-write
version-name
version-origin
versions 列出所有python版本 pyenv versions
virtualenv
virtualenv-delete
virtualenv-init
virtualenv-prefix
virtualenvs
whence 列出给定执行文件包含的python版本 pyenv whence abc 
which 
  • 更新pip
pip install --upgrade pip
  • 安装wheel
pip install wheel
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355