python虚拟环境 pyenv_Python 虚拟环境 pyenv、venv(pyvenv)、virtualenv之间的区别

请参考连接 https://blog.zengrong.net/post/2167.html

https://blog.csdn.net/lanonjj/article/details/51050212

为避免链接失效,把原文做了复制黏贴

另外在python3.6中,虚拟应该用如下命令创建

python3 -m venv /path/to/new/virtual/environment

直接用pyvenv/path/to/new/virtual/environment

创建也能成功,但是会有一个warning,具体解释可以参考这个文章https://docs.python.org/3/library/venv.html

yy1s@linux-9qk9:~> pyvenv monitor2

WARNING: the pyenv script is deprecated in favour of `python3.6 -m venv`

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

为了解决包依赖、安装权限和 python 版本问题,程序员们制造了许多工具。我把它们做一个汇总,便于查找。

这里介绍的工具都是当前流行的,不会包含已经不再维护的工具。

virtualenv

virtualenv 是目前最流行的 python 虚拟环境配置工具。它不仅同时支持 python2 和 python3,而且可以为每个虚拟环境指定 python 解释器,并选择不继承基础版本的包。

virtualenvwrapper

关于为什么使用 shell 脚本开发,作者专门 进行了解释 。

virtualenvwrapper 还有针对 vim 用户和 emacs 用户的 扩展 。

virtualenvwrapper 能支持 bash/ksh/zsh ,所以我们可以看出,它不支持 Windows。

virtualenvwrapper-win

由于 virtualenvwrapper 基于 shell 开发,因此不能在 Windows 系统上使用。但我们可以使用针对 Windows batch shell 的 virtualenvwrapper-win。

venv

Python 从3.3 版本开始,自带了一个虚拟环境 venv,在 PEP-405 中可以看到它的详细介绍。它的很多操作都和 virtualenv 类似。

因为是从 3.3 版本开始自带的,这个工具也仅仅支持 python 3.3 和以后版本。所以,要在 python2 上使用虚拟环境,依然要利用 virtualenv 。

在 *nix 系统上,可以直接执行 pyvenv /path/to/new/virtual/enviorment 来创建一个虚拟环境,在 Windows 系统上,则可以使用 python -m venv myenv 来创建。

2015-04-18 更新:

pyvenv 3.4 在 Ubuntu 14.04 下有 bug,如下:

1

2

3

pyvenv ➤ python3 -m venv blog

Error: Command '['/home/zrong/pyvenv/blog/bin/python3', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1

pyvenv ➤ pyvenv-3.4 --without-pip blog

解决方法是创建一个不含 pip 的虚拟环境,然后手动安装 pip :

1

2

3

4

pyvenv-3.4 --without-pip venvdir

source venvdir/bin/activate

curl https://bootstrap.pypa.io/get-pip.py | python

source venvdir/bin/activate

参见:

pyenv

我们可以用许多方法让不同的 Python 版本在系统上共存。

例如在 OS X 上,如果使用官方提供的 DMG 版本安装,那么自带的 python2 和新安装的 python3 是可以共存的。python3 可以使用 python3 来调用,甚至 pip 都可以使用 pip3 来调用。

但如果还有其它小版本需要共存么?我要记忆多少命令呢?

pyenv 用来解决这类问题。它可以安装、卸载、编译、管理多个 python 版本,并随时将其中一个设置为工作环境。

pyenv 不支持 Windows 系统。

pywin

Windows 上有一个 pyenv 的替代品,是 pywin 。它用来在多个安装的 Python 版本之间进行切换,也支持 MSYS/MINGW32 。

Python Launcher for Windows

Python 从3.3版本开始(又是3.3?),在 Windows 系统中自带了一个 py.exe 启动工具。如果你是使用 Python.org 官网下载的安装包安装的 Python 3.3(或更新版本)环境,那么可以直接在命令提示符中使用这个工具。

py 可以打开默认的 python 提示符; py -2.7 和 py -3 打开对应的 Python 版本。

—- 分割线 —-

上面介绍的工具中,前四个是虚拟环境切换工具,后三个是 Python 版本环境切换工具。将这两套工具结合使用,可以完美解决 python 多版本环境的问题。

(全文完)

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

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

相关文章

java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

注意两点:1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中。2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取。例子新建一个 maven 目录App.java 用于读取 resources 中的 a.txt 内容…

m.2接口和nvme区别_m.2 nvme和m.2有区别吗?

m2接口有两种,一种走sata的,另外一种走pcie(就是nvme)的。走sata的速度跟传统sata接口的没区别,就是接口变成了m2的了。走pcie的,就是我们说的nvme接口是m2的,性能也强了。M.2接口有SATA也有NVMe PCIe协议。这个是同一…

python编程软件排行榜_Python编程开发工具:这10个对Web开发者最有用的Python包

Python编程一时间成为了开发人员最喜欢的语言之一。无论是专业的,业余的,还是作为一个Python初学者,都可以从Python编程语言及其程序包中受益。Python已经被证明是当今最具活力的面向对象的编程语言之一。这就是为什么即使是一些很优秀的公司…

java excel 字体大小_Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)...

/*** 按列写入Excel并设置格式**paramoutputUrl* 输出路径*paramsheetName* 工作薄名称*paramtitles* 表头*paramarrayList* 表头数据*throwsIOException*throwsRowsExceededException*throwsWriteException*/public static voidwriteExcel(String outputUrl, String sheetName…

如何查看cplex的help文档_word查看技巧:如何快速找到文档的修改痕迹

不知道大家在工作中有没有遇到过这类的工作场景:当初步拟好一份合作协议或是项目策划书后,发给老板或其他同事审阅和修订,通常会不断地来回修改文档。此时,如果你想要查看文档哪里被修改过?你会怎么操作?很…

java将数字替换为空_将数字替换为java中正确位置的单词

实际上我正试图用用户给出的句子中的数字替换为单词.本案例日期格式;例如:我的生日是在16/6/2000,我是java的新手 – >成为—>我的生日是七月十六日,我是java的新手这是代码:Scanner reader new Scanner(System.in);System.out.println("Ent…

java重载this_Java的this关键字的使用与方法的重载相关知识

Java this关键字详解this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。例如:public class Demo{public int x 10;public int y 15;public void sum(){// 通过 this 点取成员变量int z this…

python 类和对象 经常用吗_python基础教程之对象和类的实际运用

我们熟悉了对象和类的基本概念。我们将进一步拓展,以便能实际运用对象和类。调用类的其它信息中提到,在定义方法时,必须有self这一参数。这个参数表示某个对象。对象拥有类的所有性质,那么我们可以通过self,调用类属性…

java get properties_Java.lang.System之getProperties()方法

Environmentjava.vm.version——>25.60-b23java.vm.vendor——>Oracle Corporationjava.vendor.url——>http://java.oracle.com/idea.launcher.port——>7533java.vm.name——>Java HotSpot(TM) 64-Bit Server VMfile.encoding.pkg——>sun.iouser.country—…

mysql set语句_MySQL Prepared语句简介

之前的MySQL版本4.1,查询以文本格式发送到MySQL服务器。 之后,MySQL服务器使用文本协议将数据返回给客户端。MySQL必须完全解析查询,并将结果集转换为字符串,然后再将其返回给客户端。 文本协议具有严重的性能问题。为了解决这个问…

java resultset close_java代码ResultSet is closed

我用的Eclipse开发工具写java代码,连接的是SQLServer2000。提示ResultSetisclosed代码如下:privatestaticvoidgetDBConnection(){try{Class.forName(strName);connDriverManager.ge...我用的Eclipse开发工具写java代码,连接的是SQL Server 20…

三同轴连接器_一种毫米波频段微带同轴转换结构

在微波电路中,同轴电缆和微带线是微波系统中常见的两种微波传输线,同轴电缆以其频带宽、屏蔽性好、结构简单、可弯曲等特性,常被用作模块或系统之间连接的传输线。在高频段,微带线是混合微波集成电路(Hybrid Microwave Integrated…

java rhino 运行 js_Mozilla Rhino :如何从Java调用JS函数

小编典典String script “function abc(x,y) {return xy;}”;Context context Context.enter();try {ScriptableObject scope context.initStandardObjects();Scriptable that context.newObject(scope);Function fct context.compileFunction(scope, script, “script”,…

java getselecteditem_java – 将getSelectedItem()从JComboBox转换为int或任何其他东西

它在这里与对象一起工作得很好.import java.awt.*;import javax.swing.*;class TestCombo {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {Integer[] numbers {1,2,3};String[] names {"Ben", "Ji…

java二叉树合并_Java(树的前中后序遍历构造二叉树题型整合)前序和中序、中序和后序、前序和后序遍历序列构造二叉树算法整合归纳...

前言二叉树各种花里胡哨的算法题真的把我搞晕了,今天特地整理出一类有关二叉树的算法题,希望能帮助阅读到此文章的人,今后不再受此类题型的困扰。一、题目类型已知二叉树的两种遍历序列,请根据该序列构建二叉树;①根据…

nginx https透明代理_Nginx反向代理https,配置lets-encrypt证书教程

前言本站也终于迁移到https了,由于全Docker部署,迁移过程中真是艰难无比(wordpress那块被折腾的想放弃了),也欢迎访问本人博客,(知乎的排版有些乱)Nginx反向代理https,配置lets-encr…

nginx 一个请求发给多台机器_配置Nginx实现负载均衡

企业在解决高并发问题时,一般有两个方向的处理策略,软件、硬件,硬件上添加负载均衡器分发大量请求,软件上可在高并发瓶颈处:数据库web服务器两处添加解决方案,其中web服务器前面一层最常用的的添加负载方案…

怎么用记事本写java_如何用记事本写下第一个Java程序-Fun言

在刚学java的时候,刚开始并未接触类似于Myeclipse这类的编辑器,都是用记事本编写程序,这样虽然很慢,但是能让我们明白其中的原理,所以今天来教大家用记事本来写第一个java程序"Hello World!"准备…

python中list是什么类型_Python中的list数据类型

创建列表sample_list [a,1,(a,b)]Python 列表操作sample_list [a,b,0,1,3]得到列表中的某一个值value_start sample_list[0]end_value sample_list[-1]删除列表的第一个值del sample_list[0]在列表中插入一个值sample_list[0:0] [sample value]得到列表的长度list_length …

pythonhash加密_Python字符串hashlib加密模块使用案例

主要用于对字符串的加密,最常用的为MD5加密:import hashlibdef get_md5(data):obj hashlib.md5()obj.update(data.encode(utf-8))result obj.hexdigest()return resultval get_md5(123) #这里放入要加密的字符串文字。print(val)#简便的写法&#xff…