使用pyenv与pyenv-virtualenv管理Python版本与虚拟环境
在上一篇博客中,我介绍了如何在ubutnu 18.04中安装pyenv。这一次我将介绍如何使用pyenv与pyenv-virtualenv管理Python版本与虚拟环境。
0.相关命令
首先使用pyenv -h命令可以查看可用命令
Usage: pyenv <command> [<args>]
Some useful pyenv commands are:
commands 列出所有pyenv可用命令
local 显示或设置本地的Python版本
global 设置或显示全局的Python版本
shell 设置或显示Shell使用的Python版本
install 使用python-bulid安装指定Python版本
uninstall 卸载特定Python版本
rehash Rehash pyenv shims (run this after installing executables)更新pyenv垫片路径的哈希值(安装后运行这条命令)
version 显示当前Python版本以及其路径
versions 显示pyenv所有可用Python版本
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
1.安装Python前准备
查看所有可用Python版本
$ pyenv install --list
由于我安装前没有装部分依赖,编译时报出一下错误:
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
所以在安装前,先把一些依赖包装上
$ sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libreadline-dev libsqlite3-dev
2.开始安装 Python 3.7.3
我们需要使用install命令安装某一特定版本的pyenv,下面以安装 Python 3.7.3为例:
$ pyenv install 3.7.3 -v
在线安装速度有可能很慢,可以自行到Python官网下载源码编译:
$ mkdir -p ~/.pyenv/cache
$ cd ~/.pyenv/cache
$ # 在https://www.python.org/downloads/source/有不同版本选择
$ wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz
$ pyenv install 3.7.3 -v
安装完之后rehash一下
pyenv rehash
3.Python版本控制
查看当前Python版本和所有版本
$ # 查看当前版本, 默认版本是系统内置的版本
$ pyenv version
system (set by /home/lucas/.pyenv/version)
$ # 查看所有版本,
$ pyenv versions
* system (set by /home/lucas/.pyenv/version)
3.7.3
下面三条命令涉及Pyenv版本切换的作用范围
$ # 将所有用户的Python版本切换为特定版本号(不推荐,因为有很多程序还是依赖旧版本Python,这样很容易系统崩溃)
$ pyenv global [版本号]
$ # 将当前Shell会话的Python版本切换为特定版本
$ pyenv shell [版本号]
$ # 将当前文件夹及子文件夹的Python版本切换为特定版本
$ pyenv local [版本号]
如果要删除某一Python版本
$ pyenv uninstall [版本号]
4.Python虚拟环境创建
$ # 虚拟环境后面的命名可以随便改,改成自己喜欢的即可
$ pyenv virtualenv 3.7.3 pyweb373
创建完虚拟环境后查看是否创建成功
$ pyenv versions
* system (set by /home/lucas/.pyenv/version)
3.7.3
3.7.3/envs/pyweb373
pyweb373
然后就可以进入项目文件夹中,把Python切换到虚拟环境中
$ cd ~/project1
$ pyenv local pyweb373
这样,你就成功地将这个项目的环境换成虚拟环境,可以愉快地安装第三方库、撸代码了。
可能遇到的问题
1.编译报错:No module named '_ctypes'
解决:输入下面命令安装
sudo apt-get install libffi-dev
2.版本切换没效果
解决:新建一个Shell会话
感谢阅读。
使用pyenv与pyenv-virtualenv管理Python版本与虚拟环境的更多相关文章
- pyenv管理python版本
一.介绍 pyenv 是 Python 版本管理工具. pyenv 可以改变全局的 Python 版本,安装多个版本的 Python, 设置目录级别的 Python 版本,还能创建和管理 virtua ...
- Mac OS下使用pyenv管理Python版本
问题的由来 在开发过程中,可能会遇到多个版本同时部署的情况. Mac OS自带的Python版本是2.x,自己开发需要Python3.x 系统自带的是2.6.x,开发环境是2.7.x 由于Mac机器系 ...
- 使用 pyenv 管理 Python 版本
http://einverne.github.io/post/2017/04/pyenv.html Posted on 04/22/2017 by Ein Verne | View revisio ...
- 使用pyenv来管理python版本
使用pyenv可以很方便的切换python版本,而不会影响系统的python版本,对需要使用supervisor(仅支持python2)托管程序,项目使用python3开发的情况十分有用 pyenv的 ...
- linux下virtualenv的python版本
virtualenv是python开发中一个重要的工具,它可以帮助我们创建一个干净的python解释环境,创建虚拟环境时,这个虚拟环境的 python版本往往是系统默认的2.x版本.别急,我们只需要一 ...
- conda 管理 python 版本
conda常用命令 查看当前系统下的环境 conda info -e 创建新的环境 # 指定python版本为2.7 conda create -n env_name python=2.7 # 同时安 ...
- 创建指定python版本的虚拟环境
使用virtualenvwrapper管理虚拟环境 鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper. virtualenvwrapper提供了一系 ...
- virtualenv 安装不同版本的虚拟环境的办法
废话不多说直接上代码 virtualenv -p C:\Python27\python2.exe env 上面的*.exe是你要使用的python版本的exe文件的绝对路径. 官方文档参考:http: ...
- Ubuntu通过Pyenv管理python版本
网上安装使用Pyenv的教程很多,但是实测有很多教程有坑,经过多家比较发现下面的教程可用,内容全面,与大家分享. 首先安装pyenv全家桶 curl -L https://raw.githubuser ...
随机推荐
- 30. pt-upgrade
用来测试新老版本数据库对sql的结果是否一致.两台开发测试数据库,一台是老版本,一台是新版本,来做比较,生产库别用. pt-upgrade h=192.168.100.101,P=3306,u=adm ...
- nginx集成环境下载
https://visual-nmp.en.softonic.com/download
- gambit软件license文件
最近自己的gambit软件license文件已经到期,后面采用fluent的license文件后,可以使用,但不能导入文件.不过通过努力,终于找到了可以实现导入文件的代码,并且可以实现无限期的使用fl ...
- Eclipse配置注释模板详细介绍
<引言> Eclipse 中提供了一个非常人性化的功能,可以自动生成注释为我们程序员做项目时提供便利,并且注释内容还具有定制化 可以根据自己的喜好配置不同的样式. <正文> 首 ...
- 从零开始学java (四)反射
反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制. ...
- C++解题报告 : 迭代加深搜索之 ZOJ 1937 Addition Chains
此题不难,主要思路便是IDDFS(迭代加深搜索),关键在于优化. 一个IDDFS的简单介绍,没有了解的同学可以看看: https://www.cnblogs.com/MisakaMKT/article ...
- 【翻译】Flume 1.8.0 User Guide(用户指南) Channel
翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...
- ajax相关知识总结
一.原生AJAX的兼容版本实现 function createXhr(){ var Xhr = null; //浏览器的判断 if(window.XMLHttpRequest){ //ie789 ch ...
- php日志报错child exited with code 0 after seconds from start
因为日志文件老是有这种提示: [27-May-2015 15:13:48] NOTICE: [pool www] child 3998 started [27-May-2015 15:13:59] N ...
- maple推导剑桥模型塑性势函数
with(DEtools); Parameter(M); de := diff(q(p), p)+(M^*p^-q(p)^)/(*p*q(p)) = ; dsolve({de, q(px) = }, ...