python配置虚拟环境
❶ 如何为python项目创建虚拟环境
我们在开始一个python项目,而不是几行简单的代码时,我们倾向于开始使用第三方的dependencies.当项目越来越大时,我们需要考虑如何有效的管理这些第三方库。当安装第三方库时,我们肯定是想安装在虚拟环境中。帮助我们保持我们实际系统环境的干净,避免打乱整个系统python环境。
我们可以使用pip把第三方库安装到python项目中。一个项目中往往要安装多个,鉴于安装的第三方库的各种版本,可能会导致一些兼容和运行的问题。
当我们在python项目中使用pip install ,我们是安装到全局python下的,将会根据现有的python版本安装第三方包。
我们可以通过以下命令来查找python的安装目录:
如果我们使用pip3 install ,将会安装到python3安装目录的单独的目录下。我们可以用以下命令来覆盖pip3这个命令:
但是这仍然解决不了我们在全局python下安装第三方库的问题,将会出现下列的问题:
为了避免以上的问题,python开发者使用虚拟环境。这个虚拟环境把安装的这些第三方库在一个隔离的环境中(目录内)保存。
确保你的系统上已经安装python
然后看一下pip是否也能正常调用
我们需要一个工具来创建python的虚拟环境,venv。它是封装在python3.3+版本以上的python中的。
如果我们使用python2,我们需要手动安装一个工具。这是为数不多的一个我们需要全局安装的第三方库。
注意:我们将会在文章中讨论很多venv和python3,操作系统环境不同,可能会导致某些命令的些许不同,某些工具的工作原理也些许不同。
如果你的系统上没有安装pip:
我们首先要为项目创建一个文件夹,并进入这个文件夹:
然后我们再创建虚拟环境:
这将会创建一个名为virtualenv的目录,这个目录将会包含bin、lib、include文件夹,还有一个环境配置文件。
所有的文件都是为了确保,所有的代码都运行在当前的虚拟环境下。这会帮我们把工作环境和操作系统环境隔离开来,避免我们之前提到的问题。
为了使用这个虚拟环境,我们需要激活它。激活以后,还会更改我们的命令提示符标志。这个标志也是为了表明虚拟环境已经激活,python的代码都是在这个环境下执行。
在虚拟环境下,无法访问使用全局的第三方库,在虚拟环境内安装的库也无法在外部使用。
在虚拟环境中,只有pip和setuptools是默认安装的。
激活虚拟环境后,变量path也会相应地发生改变,以达到虚拟环境的目的。
当我们完成工作,想切换回操作系统的全局环境,我们需要使用deactivate退出虚拟环境。
我们配置了虚拟环境并激活以后,我们不想在分享项目时,连同使用pip install命令安装的第三方库也一起分享。我们想去除我们的虚拟环境文件夹,但仍然可以在其他的电脑或系统上重新运行我们的工作。
为实现这个目的,我们可以在项目根目录下创建一个requirement文件。假设我们在虚拟环境下安装flask,安装完成后我们使用pip freeze命令。它将会列出我们已经安装过的库名和版本号。
我们可以将这个列表写到requirement文件中,上传到git保存,或以任何形式跟他人分享。
这个命令也可以更新这个requirements.txt文件,所以在每次安装一个新的第三方库时,我们都习惯性的运行一下这个命令,来更新我们的安装列表。
然后,如果任何人想在他们的电脑上运行我们的项目,他们只需要做:
所有的一切都如在我们电脑上运行的一样。
安装pipenv
pipenv基本上是pip的一个替代工具。它引入了两个文件,pipfile用来替换requirements.txt,Pipfile lock(which enables deterministic builds,确定第三方库的子依赖库版本的更新的解决方案)
pipenv在机理上是运行pip和virtualenv,但使用一个命令来简化操作。
安装第三方库,如flask,或numpy
也可以从Version Control system比如git来安装第三方库
需要注意上面的-e参数可以使安装editable,目前对于pipenv来说是必须的。
如果你需要使用pytest来测试项目,但在上线后不需要这个库,你可以指定这个库仅仅作用于开发模式 --dev.
--dev将会把第三库放到pipfile的一个单独的地方【dev-packages】。
如果你现在完成了开发,本地运行正常,你想锁定你的开发环境,并转至线上。使用如下命令确保开发环境:
这个代码将会创建或更新你的环境,你无需手动更改编辑。我们也应该一直使用自动生成的文件。
lock以后,在proction环境,你需要安装最新的成功的运行环境。
这个命令是告诉pipenv,安装时忽略pipfile,用pipfile.lock里的列表。pipenv将会创建一模一样的环境,包括子依赖库。
现在,另一个人想要对代码做些更改,这种情况下,他得到代码,包括pipfile,运行如下命令
这个命令将会安装开发所需的所有的第三方库,包括普通的install以及--dev安装的。
举例,现在你开发用到的一个第三库有了版本升级,因为你不需要一个特定的版本,所以你在install的时候没有指定版本号。当你运行pipenv install时,最新版本的第三方库会安装到你的开发环境内。
然后你对代码做了一些更改,结果如预期一样。然后你再重复上面的步骤lock你的环境。并更新至Proction.
将会使用默认的editor打开第三方库的代码。
❷ python虚拟环境搭建
当前python有多个版本,所以输入命令的时候在不同的场景可能会需要不同的python版本。
就需要安装python的虚拟环境,方便快速切换python的版本。
安装python虚拟环境
sudo apt-get install python-virtualenv
sudo apt-get install virtualenvwrapper
创建虚拟环境
mkdir .virtualenvs
vi ~/.bashrc
插入如下两行
export WORKON_HOME=$HOME/.virtualenvs
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
然后执行
source ~/.bashrc
mkvirtualenv -p /usr/bin/python3.8 py3env
source py3env/bin/activate
❸ python3 venv 虚拟环境使用方法
python3默认安装了venv虚拟环境,所以直接使用即可
1.创建虚拟环境
在cmd命令行下执行
python -m venv 英文格式的虚拟环境目录名称
创建以后在对应的文件夹可以看到如下文件:
2.激活需要环境:
注意:只有激活之后,才算进入该虚拟环境,否则安装包时,依然是安装在全局环境之下
激活文件在Script文件夹下,如图所示。激活:activate.bat,退出:deactivate.bat
激活方式为:dos 界面进入pyton虚拟环境文件夹/Script,然后输入activate.bat (也可直接输入activate)即可激活环境,输入python 就进入python3.6环境了。
退出方式:输入deactivate.bat 或 deactivate
❹ python虚拟环境—virtual environment
操作系统:ubuntu16.04
举个例子,tensorflow(tf)是一个十分流行的python机器学习库,你现在手里有两个tf项目,其中项目A需要使用 python2.7 + f1.2 ,项目B需要使用 python2.7 + tf1.6 .这两个项目你得同时进行,怎么办?
愚蠢的办法是需要运行项目A时,将python2.7中的tf1.6卸载掉,安装tf1.2;需要运行项目B时,将python2.7中的tf1.2卸载掉,安装tf1.6。如果是单个模块还好,但是tf的不同版本又依赖于python中的其他已安装模块,而且tf1.2和tf1.6对依赖模块有不同的版本要求,那么转换一次得卸载安装好几个模块,是不是很爆炸?
课题组里几个同门共用一台服务器,每个人拥有一个系统账户,其中只有一个人拥有root权限,里面每个人都需要使用python跑程序,而且每个人对python版本以及python模块的版本都有不同需求,很多人又没有root权限,如何解决?
使用python的虚拟环境可以轻松解决上面的问题!
python虚拟环境是一个隔离/独立的python开发环境,和系统python环境可以完全隔离,互不相关,相当于多了一个python开发环境。而且你在python虚拟环境中的开发过程和使用系统python一模一样,你可以在你创建的python虚拟环境中使用pip工具安装任何你需要的模块,该模块和系统python环境完全不相关。虚拟环境的这个特点就能解决上面的问题了。
python有两个模块可以用于创建和管理python虚拟环境:
其中,venv模块在python3.3以上的版本可以使用,而virtualenv在python2.7+和python3.3+都可以使用。
默认的系统python中是没有安装以上两个工具的,需要使用以下命令安装:
安装好之后,就可以使用这两个工具安装python虚拟环境了。
我的系统python版本有python2.7和python3.5,虚拟环境的版本只能是系统中已有的python版本。使用virtualenv安装虚拟环境的命令如下:
什么参数都不指定的话,它会使用 /usr/bin/python 路径下的python解释器版本,即python2.7。因此会默认安装python2.7虚拟环境, /home/yan/env 表示虚拟环境的安装路径。
如果你要安装的是python3.5的虚拟环境,可以这样:
一般情况下,上面两条命令就够了,这样安装得到的python虚拟环境和系统python环境是完全隔离的。
更多的命令选项可以在命令行中直接输入 virtualenv 命令获取。
venv只有python3可以使用,因此只能创建python3的虚拟环境,创建命令如下:
其中, python3 -m venv 是死命令,最后的安装路径自己指定。
注意: 以上两种安装方式在安装虚拟环境的同时也自动安装了pip工具。
安装好虚拟环境之后,每次使用该虚拟环境前需要使用 source 命令 激活 它。假设前面我在 /home/yan/env3/ 目录下安装了python3.5的虚拟环境,现在我使用以下命令激活它:
激活之后,在命令行提示符前面会有 (env3) 的提示,表示当前你处的python虚拟环境,比如我电脑的情况:
现在你可以在激活环境中干任何事情,比如使用pip命令在你新的python虚拟环境中安装模块:
或者执行python脚本。
使用完该虚拟环境之后,你需要在命令行输入 deactivate 命令来 退出 该虚拟环境:
之后就回到了正常的系统python环境中。
由于你创建该虚拟环境的目的是为了跑某个项目的程序,现在该项目做完了,不需要该虚拟环境了,你可以把该虚拟环境直接删除,如何删?
直接将创建虚拟环境时生成的文件夹删掉,就这么简单。比如我要把我刚才创建的env3虚拟环境删除:
在删除虚拟环境前记得一定得先退出该虚拟环境。
python虚拟环境的好处是:每个虚拟环境之间,以及虚拟环境和系统环境之间是完全隔离的,不同虚拟环境中,你可以安装不同版本的模块,就仿佛你可以同时拥有N多个不同的python开发环境。
唯一麻烦的一点是:每次进入某个虚拟环境之前,都要使用 source 命令激活。每次使用完,都要使用 deactivate 命令退出。
❺ python - 环境 - python用conda创建虚拟环境
创建虚拟环境是为了让项目运行在一个独立的局部的Python环境中,这样可以让不同项目用不同的python模块,使得不同环境不会相互干扰。
因为虚拟环境可以使一个Python程序拥有独立的 库library 和 解释器interpreter ,而不用与其他Python程序共享统一个library和interpreter。
打个比方 :如果程序A、程序B是用同一个python环境,程序A需要某个库的1.0版本,而程序B需要同样这个库的2.0版本,那么程序A能执行,则程序B就不能执行。
先进入命令行窗口 win+R ,输入 cmd
罗列当前已有的虚拟环境 conda env list
我这台电脑有3个环境,分别是 base 、 professior 、 pycharm book
其中 base 可以看到有个*,代表的是它为最根本的环境。
查看 conda create 命令
从上图可以看到
创建名为 frog_test 的虚拟环境,指定python版本 3.7 。
conda create -n frog_test python=3.7
关注最末尾这几句话:
查看是否创建成功
看到 (frog_test) 则代表进入成功
指定环境,查看已安装的包 conda list -n frog_test
指定环境,安装指定版本的包 conda install -n frog_test pandas==1.0.4
安装慢的话可以用镜像源,进入虚拟环境后用
pip install 模块名 -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
再次查看,可以发现已经安装成功。
其余如:更新模块包、删除模块包,全部都可以进入虚拟环境后 pip 进行
更新pandas模块包
更新pandas模块包 pip install --upgrade pandas -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com
之前安装的1.0.4版本pandas变成1.0.5了。
删除pandas模块包
删除成功
=====================================================
❻ python多版本和虚拟环境(pyenv+conda or virtualenv)
2.7.X
3.X
Anaconda2
Anaconda3
pyenv是一个管理各个python版本的管理器。可以在系统里同时保留多个python版本,等需要时定义需要的版本。
项目地址
看项目地址中的readme
查看pyenv可安装的版本列表
安装和卸载指定版本,会将python版本安装在 $(pyenv root)/versions/ 中
查看当前已经安装了的python版本。输出内容中,system关键字是系统python版本。 *表示当前环境所处的版本。
全局切换为anaconda科学计算环境(不建议这么做),做了如果要恢复,则将最后一个参数改为--unset
当前环境接环。在当前目录以下。如果要恢复,则将最后一个参数改为--unset
本来这是一个单独的软件用来虚拟一个python版本环境,让每个工作环境都有一套独立的python各自的第三方插件互不影响。然而在 pyenv 下有一个插件 pyenv-virtualenv 他可以在 pyenv 的环境下担负起 virtualenv 的事情。(如果使用的是原生python可以用这个工具,如果用的是anaconda则不用这个,用下一章说的conda工具来完成虚拟环境)
项目地址
看项目地址中的readme
在当前目录下创建一个 python 版本为2.7.1的环境,环境名字为 env271。 这个环境的真实目录位于 ~/.pyenv/versions/
(创建时并不激活)激活当前环境。此时已经进入虚拟环境,在当前环境下所有pip等操作都不会影响系统环境和系统路径。
离开已激活的环境,切换回系统环境。但并没有被删除,下次依旧可以启动。
删除一个环境,当然也可以到真实目录下删除文件夹。
本来不想用这个的,但是因为 pyenv-virtualenv 有一些问题,无法很好的管理conda环境,比如有一些anaconda 自带的一些命令(例如pylint)无法被使用。因此还是老老实实使用 conda 来管理虚拟环境。
conda 是自带于 anaconda 的所以并不需要额外安装,如果在 anaconda 环境中就可以使用。conda 不仅可以进行 环境管理 ,还可以 包管理 ,和对 anaconda和conda 进行 版本升级 。
由于conda使用方法太多,因此这里罗列一些常用的主要是一些虚拟环境的命令。具体的到 官网文档 去查看一下。
首先conda工具是需要在anaconda环境下的,因此先执行 pyenv local anaconda3-4.2.0 进入anaconda环境后就可以执行conda工具了。
创建一个虚拟环境。可以指定名字,指定包,甚至制定python(这样的话就python版本管理了所以不建议使用,python版本管理交给pyenv),所以命令中 python=x.x 可以不写
罗列已经创建的环境,两条命令是一样的。
激活一个环境。和virtualenv一样,创建不等于激活。激活后才能真正使用虚拟环境。
如果发生错误 Error: activate must be sourced. Run 'source activate envname' 说明activate命令没有找对,导致错误。吧命令改成
这样就能成功建立虚拟环境了。
删除一个虚拟环境。
复制一个虚拟环境。这个是个不错的好功能。
conda还能吧环境配置文件导出,在另一台机器上重新读入配置文件,就能复刻你的环境了。
conda 还能进行包的管理。调用的是 pip 所以也很棒。
查看当前环境已安装包,用-n指定后,就是查看某个环境下的已安装包
为某个指定的环境安装包,升级包,删除包。
它还能升级自身和anaconda和python的版本。
它和pip一样也能设置安装包的镜像位置。其余还有能使用R命令等等,都到官网文档中搜索一下。
❼ python虚拟环境
从python3.3开始,python内置了env库,提供了对虚拟环境的支持。虚拟环境和全局环境相比有以下优势:
命令介绍:
命令的意思是运行venv模块创建虚拟环境,这个虚拟环境的目录就是命令最后指定的目录。
一般常根据项目创建虚拟环境,即每个项目会有一个对应的虚拟环境。下面演示一般的使用过程:
这样一个虚拟环境就创建完成。
虚拟环境创建成功后,可以通过 <虚拟环境目录>/Scripts/activate.bat 在命令行中激活该环境:
激活虚拟环境后,位置提示符中会在前面显示虚拟环境的名字:
命令行中,如果在已激活的虚拟环境中操作完,可以通过 deactivate 命令退出该虚拟环境。
当项目通过上述方式创建完成,如果要采用Pycharm开发,可以通过以下方式给该项目绑定已创建的虚拟环境: