python 当前目录_virtualenvwrapper打造多版本Python环境

6d4781d25b93a6607770e8dee3fd7608.png

前言

面对多个 Python 开发项目时,需要针对不同的项目创建相应的开发环境。通常情况下,使用 virtualenv 创建一个虚拟的独立 Python 环境,但是 virtualenv 创建的环境相对分散不便于管理。这里推荐使用 virtualenvwrapper 来创建集中的便于管理的 Python 环境,同时可以结合 pyenv 为不同的项目选定不同的 Python 版本。

virtualenvwrapper

安装

通过 pip 安装 virtualenvwrapper(Ps: 记住加上 sudo)。

$ sudo pip install virtualenvwrapper

配置

在.bashrc(或.zshrc)中添加下列内容:

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh

接着执行`source ~/.bashrc(或./zshrc)。注意:修改.bashrc还是.zshrc取决于你使用的那种 shell。

使用

  • workon: 打印所有的虚拟环境;
  • mkvirtualenv xxx: 创建 xxx 虚拟环境;
  • workon xxx: 使用 xxx 虚拟环境;
  • deactivate: 退出 xxx 虚拟环境;
  • rmvirtualenv xxx: 删除 xxx 虚拟环境。

pyenv

安装

Linux

使用下列命令自动安装 pyenv:

$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

Mac OS X

使用 homebrew 直接安装:

$ brew update
$ brew install pyenv

配置

在.bashrc(或.zshrc)中添加下列内容:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

然后重启 shell,使配置生效。

$ exec "$SHELL"

安装 Python 时依赖环境

安装 Python 时需要提前安装好所需的依赖环境。

  • Ubuntu/Debian:
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev 
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev 
xz-utils tk-dev libffi-dev liblzma-dev
  • Fedora/CentOS/RHEL:
sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel 
openssl-devel xz xz-devel libffi-devel

Alternative of openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing
  • openSUSE
zypper in zlib-devel bzip2 libbz2-devel readline-devel sqlite3 sqlite3-devel libopenssl-devel xz xz-devel
  • macOS:
brew install readline xz

使用

1. 查看所有 Python 版本

$ pyenv versions

执行命令将打印出安装的所有 Python 版本,*表示当前使用的 Python 版本。

2. 查询所有可安装的 Python 版本

$ pyenv install -l

3. 安装与卸载

$ pyenv install 2.7.14

安装 Python 2.7.14 版本。

$ pyenv uninstall 2.7.14

卸载 Python 2.7.14 版本

$ pyenv rehash

创建垫片路径(为所有已安装的可执行文件创建 shims,如:~/.pyenv/versions//bin/,因此,每当你增删了 Python 版本或带有可执行文件的包(如 pip)以后,都应该执行一次本命令)。

4. 设置 Python 版本

$ pyenv shell 2.7.14  # 设置面向 shell 的 Python 版本,通过设置当前 shell 的 PYENV_VERSION 环境变量的方式。
$ pyenv local 2.7.14  # 设置 Python 本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。
$ pyenv global 2.7.14  # 设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。

注意: shell > local > global。pyenv 会从当前目录开始向上逐级查找 .python-version 文件,直到根目录为止。若找不到,就用 global 版本。

Ps: 因为系统本身常常会依赖自带的 python 版本,所以尽量不要修改 global。

5. 取消 shell 或 local python 版本

$ pyenv shell --unset
$ pyenv local --unset

使用镜像加速下载

通过下列脚本使用国内淘宝的镜像快速安装各版本 Python:

$ v=3.6.3;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P $(pyenv root)/cache/;pyenv install $v注意:v 为 Python 版本号,请根据需要自行更改。

如果镜像不能使用,可以自行下载指定的 Python 版本安装包放入,$(pyenv root)/cache/ 文件夹下,然后执行pyenv install xxx(版本号) 安装相应的 python 版本,安装时会使用缓存安装包。

pyenv-virtualenvwrapper

安装

Linux

通过下列命令安装 pyenv-virtualenvwrapper:

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

Mac OS X

Mac OS X 下可选择使用使用 Homebrew 来安装:

$ brew install pyenv-virtualenvwrapper

激活

安装完成后使用下列命令激活 pyenv-virtualenvwrapper:

$ pyenv virtualenvwrapper

使用

$ pyenv shell 3.6.3  # 设置当前 shell python 版本为 2.7.14
$ pip install virtualenvwrapper  # 第一次使用新的 Python 环境需要安装此包,否则创建的虚拟环境 Python 版本仍为系统默认
$ mkvirtualenv python3  # 创建 python 3.6.3 版本的虚拟环境 python3

参考

  1. pyenv 文档
  2. virtualenvwrapper 文档
  3. pyenv-virtualenvwrapper 文档
  4. 使用 pyenv 管理 Python 版本
  5. pyenv 安装配置与国内镜像加速

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle装了客户端怎么登陆账号,分享Oracle 11G Client 客户端安装步骤(图文详解)...

Oracle 11G Client 客户端安装步骤,具体如下:下载地址:http://www.gimoo.net/database/167737.html先将下载下来的ZIP文件解压,并运行setup.exe文件。执行到第四步之后,出现错误,直接点全部忽略就可以了。把…

python与excel互通_【python】python vs Excel ( 与mysql数据库之间的交互)

【python】python vs Excel ( 与mysql数据库之间的交互) 通过python与mysql数据库做交互 到目前为止大部分案例的演示数据都是基于文件进行读取的。那么python如何跟数据库之间做交互才是未来我们真正需要关心的。因为我们的数据最终还是要存储到数据库中去的。 python与数据库…

基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1.摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位、字符分割和字符识别三个主要部分。本文首先确定车辆牌照在原始图像中的水平位置和垂直位置,从而定位车辆牌照…

python删除第一行_Python删除文件第一行

一、代码实例: def del_firstline(): for line in fileinput.input("file.txt", inplace 1): if not fileinput.isfirstline(): print(fileinput.replace("\n", "")) 二、使用的库:fileinput fileinput模块提供处理一个或…

weblogic 11g 配置oracle数据源 数据库驱动选哪个,weblogic11g配置db2数据源驱动有关问题...

weblogic11g配置db2数据源驱动问题今天在weblogic10.33上配置db2 9.7数据源,采用type4方式连接,驱动选择weblogic db2 type4驱动,配置成功后,开启应用测试,发现对元数据的获取存在问题,比如说通过 select *…

python英文词云代码_使用python实现个性化词云的方法

先上图片词云图 需要模板 pip install jieba pip install wordcloud 还需要安装另外两个东西这两个我也不太懂借鉴百度写上去的 pip install scipy pip install matplotlib 因为用ubuntu系统所有没有windows那么麻烦,也没有那么多报错 看到好多人制作自己的词云有没…

php 打开pdf文件附件,pdf里怎么链接到附件

首先试试修改config.inc.php 里的cookie前缀,随便改个试试,例如:$cookiepre FR4_; // cookie 前缀不行的话试试下面的,attachment.php找到function getlocalfile($filename, $readmod 1, $range 0) { if($readmod 1 || $readm…

python numpy库作用_python Numpy库

一.导入库 import numpy as np 二.创建 1.numpy中只有一种数据类型:ndarray,表示n维数组 创建ndarray数组: -由列表或者元组类型创建数组 -有元组类型创建数组 -创建特殊数组 2.采用np.array函数来创建,语法为: np.array(列表或元…

oracle 关闭如何启动,ORACLE启动和关闭实例

实例启动和关闭:一.数据库启动的几种状态(1)SQL>startup 启动的过程:a. 例程启动b. 数据库加载c. 数据库打开(2)SQL>startup nomount例程启动阶段所有做的工作:a. 按以下顺序读取初始化参数文件:首先读取 spfileSID.ora &am…

python文本解析_如何通过python进行文本解析?

我希望使用python解析数据,以便将其导入Excel电子表格中。我需要一些帮助来实现过程的自动化。文件内容包括:ok: [wrt02.test1] > { "msg": "nxos" } TASK [checklist : OUTPUT IOS_XR] ***************************************…

linux监测node进程,通过node_exporter监控linux服务器一

前言:node_exporter用于监控*nux系统,使用go编写的收集器prometheus服务器:192.168.199.222监控服务器 192.168.199.221在192.168.199.221下载node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v*/node_exp…

k8s 离线安装_阿里开源 k8s 事件通知服务

背景在 Kubernetes 开源生态中,资源监控有 metrics-server、Prometheus等,但这些监控并不能实时推送 Kubernetes 事件,监控准确性也不足。当 kubernetes 集群中发生 Pod因为 OOM 、拉取不到镜像、健康检查不通过等错误导致重启,集…

kali linux解密栅栏密码,最详细bugku加密小白解法---持续更新!

bugku加密!安排本文持续更新1 摩斯密码2 栅栏密码3 Ook密码4 brain密码5 easycrypto密码6 base647 散乱的密文8 凯撒密码9 一段base6410 !?11 []-12 奇怪的密码--凯撒变式13 托马斯杰斐逊--转轮加密14 伪加密15 告诉你个秘密16 这不是MD517 贝…

python元组类型_Python数据类型之元组

导语:元组介绍访问元组修改元组删除元组元组运算符元组内置函数 元组介绍 与列表类似,不同之处在于元组的元素不能修改。 元组使用小括号,列表使用方括号。 元组的创建,只需要在括号中添加元素,并使用逗号隔开即可。 实…

linux命令 重定向%3e,linux输出信息调试信息重定向

在运行linux的时候有所有的调试信息可以分为三个部分1、bootloader输出信息U-Boot 1.3.2(Nov 19 2016 - 22:02:08)DRAM: 64 MBFlash: 512 kBNAND: 64 MiBIn: serialOut: serialErr: serialHit any key to stop autoboot: 0[yqliu2410 #] tftpFound DM9000 ID:90000a46 at addre…

360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”

0x00 寻找突破口打开首页,emm就一个登录页面,没了随便写点东西提交看看天生手欠的我一不小心就多输了一个单引号WDNMD,除了数字和字母其他都不行?这叫我怎么测?刚刚要放弃,就在这时,首页的一个二维码吸引了我正是安卓端的软件,眼前一亮,仿佛找到了打开新世界的大门开开心心地…

linux内核中测量时间的方法,Linux内核中获取时间函数do_gettimeofday

内核代码能一直获取一个当前时间的表示, 通过查看 jifies 的值. 常常地, 这个值只代表从最后一次启动以来的时间, 这个事实对驱动来说无关, 因为它的生命周期受限于系统的 uptime. 如所示, 驱动可以使用 jiffies 的当前值来计算事件之间的时间间隔(例如, 在输入驱动中从单击中区…

python 函数递归_Python零基础之三元表达式、函数递归、匿名函数教程!超级详细!...

目录一、三元表达式二、函数递归 递归调用的定义递归分为两个阶段:递归,回溯三、匿名函数 什么是匿名函数?有名字的函数与匿名函数的对比lambda匿名函数的应用四、内置函数 #注意:内置函数id()可以返回一个对象的身份,…

linux 内核空间占用cpu百分比过高,linux下分析java程序占用CPU、内存过高

一、CPU过高分析1)使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低,说明CPU占用率越高。2)…

python输入半径计算球的体积_如何用Python中的Monte-Carlo方法计算10维球体积?

你的日常生活中有很多问题. 您收到的错误消息来自您的行 r 2.0*np.random.uniform(0,1,iter) - 1.0 函数调用np.random.uniform(0,1,iter)不会创建单个随机数.相反,像大多数numpy函数一样,它返回一个数组 – 在这种情况下,是一个你声明的长度的向量(在本例中是iter).所以r也是…