Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper

摘要:
Python 3和Python 2彼此独立,不会相互影响。通常,python3程序的前缀目录位于/usr/local中。还有一段:https://www.jianshu.com/p/7ed2dfa86e90为什么我需要虚拟说唱歌手?因此,要使用包装器,必须首先安装virtualenv。安装并输入pip3installvirtualenv//如果安装失败,请参考与下面virtualvwrapper相同的处理方法。替换源代码或下载缺少的依赖包,然后重新编译并将python安装到virtualenv。在/usr/bin下创建软链接。输入virtualenv-system站点包myenv,在当前文件下创建虚拟环境。

这里以CentOS系统为例。CentOS默认会安装Python2。而且这个python2不能随便删除,因为它被很多程序所依赖。所以不要轻易删除,不然会出现问题。

那么我们可以自行下载Python3的源码,编译,安装到独立的目录下。

Python3和Python2是相互独立的,不会影响对方。

通常来说python3程序的prefix目录放在/usr/local中。

1、下载python3源码:

python源码的网址是:https://www.python.org/ftp/python/

可以打开浏览器查看合适的版本,然后再linux系统中用wget命令+网址下载下来;如下图所示:

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第1张

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第2张

2、编译python3源码:

下载完源码,将压缩包解压,可以使用命令行 tar -zvf Python-3.8.3.tgz

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第3张

 2.1 编译前先安装python所需的依赖包:

有个很方便的方式,输入如下指令,会自动安装python所需的所有依赖包。

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第4张

或者可以逐一安装依赖包:

  yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel zlib-devel ncurses-devel tk-devel libffi-devel gcc make

2.2 在/usr/local下创建python3文件夹mkdir /usr/local/python3

2.3 cd到解压的python源码文件夹中:cd Python-3.8.3

2.4 指明安装路径:./configure --prefix=/usr/local/python3

2.5 开始真正的编译:make && make install

接下来就是等待编译完成,如果编译过程中有报错,根据错误提示安装相应的依赖包或者根据情况解决错误;

3、为python3解释器添加软链接

进入/usr/local/可以发现多了一个python3文件夹,进入该文件夹如下图所示,这就是编译好的python3程序了。bin目录里面有个python3

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第5张

然后输入./python3 我们就可以打开该解释器了,可以看到是python3.8.3版本;

不过这样子有点麻烦,因为每次都要进入到该文件夹下,输入./python3才行;

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第6张

在我当前的环境下,任意地方输入python,显示的是python2

cd 到/usr/bin目录下,ls -l之后可以发现 python这个软连接指向了python2, python2这个软链接指向了python2.7;

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第7张

我们在/usr/bin中创建一个python3软链接,链接到/usr/local/python3/bin/python3.8的解释器上;

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第8张

 Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第9张

这时候我们在任意地方输入python3都会顺利打开python3了,这里我就不占用python了,让python指向python2。

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第10张

 因为centos很多程序都依赖python2,为了防止出现问题,我就不修改python的软链接了。

4、其他:

其实现在实际开发很少会用到全局的解释器,而是会根据各个项目创建一个自己单独使用的python 环境,我们管这叫python虚拟环境

virtualenvwrapper是管理Python虚拟环境的工具,可以很方便的为不同的项目建立独立的环境,每个项目都可以安装自己的依赖,同时也支持在不同的虚拟环境中存在不同版本的Python。

这样就解决了很多项目时,如果共用全局的python解释器而造成的依赖包相互冲突。或者时版本的问题。

引述网上的一段文字: https://www.cnblogs.com/fengqiang626/p/11788200.html

  工程一多,难免会碰到不同的工程依赖不同版本的库的问题;

  亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难。

  此时,我们需要对于不同的工程使用不同的虚拟环境来保持开发环境以及宿主环境的清洁。

还有一段文字:https://www.jianshu.com/p/7ed2dfa86e90

为什么需要 virtualenvwrapper?而不是virtualenv?这要从 virtualenv 说起。virtualenv 的一个最大的缺点就是,每次开启虚拟环境之前要去虚拟环境所在目录下的 bin 目录下 source 一下 activate,这就需要我们记住每个虚拟环境所在的目录。

一种可行的解决方案是,将所有的虚拟环境目录全都集中起来,比如放到 ~/virtualenvs/,并对不同的虚拟环境使用不同的目录来管理。virtualenvwrapper 正是这样做的。并且,它还省去了每次开启虚拟环境时候的 source 操作,使得虚拟环境更加好用。

所以我们可以知道这个wrapper是一个virtualenv的管理工具用于将虚拟项目统一管理的工具

接下来讨论一下如何安装,配置和使用virtualenvwrapper

4.1 安装和使用virtualenv:

  wrapper只是一个工具包装并简化对virtualenv的操作,因为virtualenv的操作太麻烦了。所以要使用wrapper必须先安装virtualenv。

  这里先安装和使用virtualenv,然后感受它麻烦在哪

安装输入 pip3 install virtualenv    //如果安装失败参考下方virtualenvwrapper一样的处理,更换源 或者 下载缺失的依赖包后重新编译安装python

给virtualenv在/usr/bin下创建一个软链接

输入 virtualenv --system-site-packages myenv会在当前文件下创建一个虚拟环境myenv。进去之后查看发现继承了系统的第三方包。如果不加--system-site-packages就不会继承第三方包。

这里默认的是python3,因为virtualenv是通过python3中pip3安装的。如果要创建python2的话可以输入 virtualenv -p=/usr/bin/python2 myenv2就行了

 Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第11张

我们发现上面的命令只是在当前路径下创建了虚拟环境文件夹。也就是说虚拟环境文件夹可以放在任何一个地方

然后我们要cd到虚拟环境文件夹下,然后输入 source bin/activate ,才能真正进入虚拟环境,进入虚拟环境这个方法就比较复杂。

要退出当前虚拟环境的话,输入:deactivate

所以virtualenv谈不上在虚拟环境之间来回切换,需要不断地进入环境,退出环境。虚拟环境文件夹的摆放位置也相对松散。

//这里要注意一下,一旦进入虚拟环境后,输入的python和pip都是指向当前的虚拟环境了,跟系统里面的那个没啥关系了。

4.2 安装virtualenvwrapper:

输入命令pip3 install virtualenvwrapper。

当然使用pip3安装virtualenvwrapper前可以给pip3配置一下环境变量,我的做法是在/usr/bin中创建一个指向pip3的软链接,这样输入pip3会可以找到pip3了。

然后是给pip3配置国内源这样下载会快一些

https://blog.csdn.net/wushiqi11/article/details/104673953/     //这篇文章介绍了配置pip源的两种方法,一种是临时的,一种是永久的;

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第12张

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第13张

此外在用pip3安装virtualenvwrapper时有时候会报错,我就遇到了下面这种情况的错误,原因时我编译python源码的时候,少安装了一个依赖包导致的。重新安装依赖包然后重新编译python就可以了

https://www.jianshu.com/p/69681655309b    // pip3安装wrapper时"ModuleNotFoundError: No module named '_ctypes'"错误解决方法

4.3 配置virtualenvwrapper:

~/.bashrc中写入如下配置,这几行的主要作用分别是设置统一管理目录设置解释器所在路径执行virtualenvwrapper.sh脚本(这个脚本在安装完wrapper后就会有的)。

如果要创建一个不带已经安装到系统的中第三方包的环境,可以加上参数 --no-site-packages,这样就可以得到一个不带任何第三方包的干净的python运行环境;

还有一个配置就是设置virtualenv的环境变量

当然这个virtualenvwrapper只对本用户有效,不是全局的。我们可以稍后验证一下。

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第14张

 写入成功后,输入source ~/.bahrc,让脚本立即生效

不过这里我后续发现一个问题就是我安装的virtualenv版本太新了,它已经不识别--no-site-packages这个参数。而且新版的virtualenv是默认不继承当前系统的第三方包了,所以你原本就是不希望继承第三方包的话,理论上不需要在配置文件.bashrc中加ARGS参数了。这是新旧版本的一个差异要注意,也就是默认情况发生了变化。新版本下,如果你希望创建一个纯净的虚拟环境就不需要在.bashrc中配置ARGS参数了。

但是如果你希望创建虚拟环境时继承系统的第三方包,可以在.bashrc中给ARGS参数赋值--system-site-packages ,这个是新版本virtualenv识别的参数,表示创建虚拟环境时继承系统的第三方包。

 Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第15张

 Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第16张

输入virtualenvwrapper再看一下,命令起作用了。

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第17张

 我切换到root用户,再输入一次virtualenvwrapper,可以发现,没有找到命令。

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第18张

 4.4 使用virtualenvwrapper:

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第19张

我环境是这样的,在/usr/bin下,python指向的是python2python3指向的是python3使用python2可以输入python2或者python,使用python3可以输入python3;

4.4.1 创建,切换,退出 virtualenvwrapper环境

  mkvirtualenv env

  mkvirtualenv -p /usr/bin/python2 env2   # -p参数指定Python解释器程序路径或者--python=/usr/bin/python2.7

  workon  虚拟环境名         //切换到指定虚拟环境

  deactivate                         //退出虚拟环境

输入mkvirtualenv env之后,我们会发现在~/Envs/这个根目录下多了一个env文件夹。

 Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第20张

而且发现提示符多了个env呢,进去之后发现创建的是python3的虚拟环境。

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第21张

输入 deactivate 可以退出该虚拟环境:

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第22张

如果我们要创建python2的话,可以手动指定解释器路径:mkvirtualenv -p /usr/bin/python2 env2

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第23张

 Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第24张

 同样地,我们发现创建了一个基于python2的虚拟环境,提示符多了一个(env2)。

另外virtualenvwrapper的一个强大之处在于支持虚拟环境之间的切换

输入workon 虚拟环境名,就可以切到指定的虚拟环境了,非常方便。

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第25张

最后我们还可以删除指定的虚拟环境

输入rmvirtualenv env2 ,就很方便地删除了虚拟环境

 Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第26张

我们发现virtualenvwrapper的一个特点就是统一将虚拟环境管理在一个根目录下,这个根目录有环境变量WORKON_HOME决定。这样虚拟环境就不会像virtualenv那样到处乱放了。

4.4.2 其他virtualenvwrapper命令

lsvirtualenv     //罗列所有的虚拟环境

cdvirtualenv   //进入当前虚拟环境的主目录中

lssitepackages    // 罗列sitepackages中的内容

cdsitepackages   //进入到sitepackages目录中

Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper第27张

5、环境的一致性

假如我们本地开发好了python,本地项目有完整的代码+依赖环境。

需要将本地项目发布到服务器上,那么一个问题就是必须保持服务器上的环境跟本地一致才行。

我们可以使用pip3 freeze > requirements.txt

产生一个requirements.txt的文本,这个文本描述了本地环境中的项目依赖包的所有信息。

然后在服务器中创建虚拟环境,在服务器的虚拟环境中输入pip3 install -r requrements.txt,从而导入和本地环境一致的项目依赖包

注:这里补充一下pip和pip3区别:

1、pip是python的包管理工具,pip和pip3版本不同,都位于Scripts目录下:
2、如果系统中只安装了Python2,那么就只能使用pip。
3、如果系统中只安装了Python3,那么既可以使用pip也可以使用pip3,二者是等价的。
4、如果系统中同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用。



参考链接:

https://www.cnblogs.com/cosiray/p/9946401.html                       //这里面依赖包的安装很简洁,值得借鉴

https://www.cnblogs.com/Liuyt-61/p/11621773.html                   //下载,编译,安装python

https://blog.csdn.net/jiduochou963/article/details/86694775      //pyhon源码包编译安装,挺详细的

https://www.jianshu.com/p/16d84e39c546            //安装virtualenvwrapper

https://pdf.us/2019/09/25/3660.html                                           //virtualenv安装和使用

https://www.cnblogs.com/fengqiang626/p/11788200.html         //virtualenv和virtualenvwrapper详解

https://www.cnblogs.com/zl1991/p/9041554.html                     //linux下切换python2和python3(转)

免责声明:文章转载自《Python17_Linux系统中安装Python3、virtualenv、virtualenvwrapper》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ESP8266-Arduino杀手?C#使用Process类杀死进程,执行命令等下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

OpenCV 4.0+Python3.6 在 Windows 操作系统下开发环境搭建

1:到 https://www.python.org/ 网站上下载安装 Python 3.6.x; 2:使用 pip install opencv-python 命令安装 opencv-python 开发包; 3:或者使用 pip install opencv-contrib-python 命令安装 opencv-contrib-python 开发包; 4...

Java虚拟机解释器与JIT编译器

一、JAVA编译相关概念 1、动态编译(dynamic compilation)指的是“在运行时进行编译”;与之相对的是事前编译(ahead-of-time compilation,简称AOT),也叫静态编译(static compilation)。 2、JIT编译(just-in-time compilation)狭义来说是当某段代码即将第一次被执行时进...

如何分析和提高(C/C++)程序的编译速度?

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。 本文链接:https://www.cnblogs.com/lihuidashen/p/12937085.html 微信链接:https://mp.weixin.qq.com/s/MFOaa-Dw1iNMXuXPfXjLBA 一个别人的vs 2010 的程序...

(原)anaconda 的安装与在pycharm中的版本切换

参考网页: http://continuum.io/blog/anaconda-python-3 http://conda.pydata.org/docs/intro.html#creating-python-3-4-or-python-2-6-environments 下载页面: http://continuum.io/downloads 运行环境:ma...

任务备忘(已经完成):用python写一个格式化xml字符串的程序

功能: 1.将xml中多余的空格,换行符去掉,让xml字符串变成一行。 2.将xml中添加缩进,使用print能正确打印添加缩进后的字符串。 思路: 采用正则表达式来判断xml中字符串的类型: 1.文件头 2.判断元素的种类:带有属性的标签,没有属性的标签,标签内结束的标签,只含有文本的标签,不含有文本的标签。 3.根据标签的级别添加换行符后面的空格 '...

Windows和Linux下查看Apache、MySQL、PHP版本

# Windows查看Apache版本: 使用命令:httpd -v # Linux查看Apache版本: 使用命令:apachectl -v # Windows查看MySQL版本: 使用命令:mysql --version # Linux查看MySQL版本: 使用命令:mysql -V # Windows查看PHP版本: 使用命令:php -v...