Python 虚拟环境

前言

有的时候因为各种原因,在操作系统下,我们会安装很多版本的Python解释器。同样,我们也有可能因为各种原因,需要不同版本的模块,比如Django1.8,Django1.11。再加上pip工具管理器的版本混乱问题。这就使得很多人在Python的环境管理上产生极大的混乱。

通常每个项目,甚至项目不同阶段的版本,需要不同的Python解释器和依赖库。为了清晰明了,安全可靠的管理这些环境,需要为每个项目或每个应用各自建立一套“独立、隔离”的Python运行环境。

virtualenv就是用来为每一个项目创建一套“独立隔离”的Python运行环境的工具。

特别提醒:如果安装了多个 Python 版本且重命名了 python.exe(如python27.exe、python36.exe),那么在执行 pip2.7 或 pip3.6 会报致命错误!解决办法是修改对应的 pip.exe 文件中调用 python 的路径(如将c:\python36\python.exe修改为c:\python36\python36.exe)。

关于pip的更新

打开CMD输入以下命令(默认已添加Python环境变量)。

python -m pip install --upgrade pip

不难发现,此命令是在 pip install 加了前缀 python -m,另外 --upgrade 为命令修饰。

如果强制重装pip,命令如下。

python -m pip install --upgrade --force-reinstall pip

安装virtualenv

以windows操作系统为例,要安装virtualenv,建议直接使用当前环境变量下指定的pip,也就是你操作系统默认的那个python版本所绑定的pip,这样方便命令调用。通常如下:

pip install virtualenv

可以在命令行界面中验证安装:where virtualenv

离线安装virtualenv

准备好安装包,链接:https://pan.baidu.com/s/1avMmIyDFu2Z5plLstc77Mw  提取码:cs2t

使用 pip isntall 安装。

pip install C:\MyProject\MyBlog\virtualenv-20.10.0-py2.py3-none-any.whl

建立虚拟环境

在命令行执行:virtualenv –p "真实python解释器可执行程序" –-no-site-packages "虚拟python环境完整路径",如:

virtualenv –p C:\Python35\python.exe –-no-site-packages E:\CMDB_Vir

提示:若添加了Python环境变量,则-p参数可直接写python。--no-site-packages非必须。

-p: 指定你要虚拟的Python版本,这里选择了本地的python3.5;

–-no-site-packages(新版virtualenv好像改为"--clear"了 ?):表示在建立虚拟环境时不将原版本中的第三方库拷贝过来,这样就能获得一个纯净的Python环境;

E:\CMDB_Vir:表明在该目录下,建立一个叫做"CMDB_Vir"的虚拟环境。

使用虚拟环境

强烈建议将新建的虚拟环境中的 python 添加到系统环境变量中!

命令行下,进入你要使用的虚拟环境的目录下的script文件夹,运行 activate 命令。或者使用绝对路径的方式调用该命令。

 

必须注意命令提示符的开头(CMDB_Vir)它表示你当前在CMDB_Vir这个虚拟环境内。现在,你可以当做一个正常的Python环境使用。例如运行python命令,又或者使用pip安装第三方库pip install requests。这些都被限制和绑定在CMDB_Vir这个虚拟环境内,不会对操作系统下本地的Python版本和其它的虚拟环境产生任何的影响!

 

新建Django工程:

1.在虚拟环境中,安装Django库:pip install django==1.11

2.在虚拟环境中,进入虚拟环境目录,新建Django工程:(1) cd E:\CMDB_Vir  (2) django-admin startproject djweb

3.用PyCharm打开Django工程根目录:(1) 需要手动设置选择虚拟环境Python解释器  (2) 新建app:python manage.py startapp webapp

温馨提示:

如果是拷贝的Django项目,且包含了 requirements.txt 文件,可以一键安装所需模块。进入虚拟环境,然后:

pip install -r requirements.txt    # 注意是requirements.txt的完整路径或相对路径

留意:执行以上命令的前提是,已使用命令 "pip freeze > requirements.txt" 把项目环境的依赖库信息导出到 requirements.txt 文件里了。

退出虚拟环境

要退出虚拟环境,只要运行script目录下的 deactivate 命令就可以了。

删除虚拟环境

要删除虚拟环境,直接删除虚拟环境所在的目录就可以了,注意不要将其它的环境给删了。但是,删除虚拟环境后,所有以前使用该环境的工程都将受到影响。这点很好理解,所以请确保环境不再有需要再删除! 

linux操作系统下的使用

创建虚拟环境: $ virtualenv -p /usr/bin/python3.5 –-no-site-packages /my_venv

启动虚拟环境: $ source /my_venv/bin/activate 

退出虚拟环境: $ deactivate 

删除虚拟环境: $ rm –rf my_venv

Pycharm使用虚拟环境

因为Pycharm集成了 virtualenv 等虚拟环境工具,故可通过Pycharm帮助创建Python虚拟环境,只需要在设置中指定基本Python解释器进行创建。(不太明白?点这里

虚拟环境迁移

注意事项:直接将虚拟环境复制到另一台机器,直接执行是会有问题的。

那么可以采用以下办法。
思路:将机器1虚拟环境下的所有模块打包,复制到机器2上进行安装。有两种情况要考虑,机器2无网络和有网络情况(无网,证明无法在线安装包,那么就需要将机器1模块整体打包成".whl",然后到机器2安装;有网情况,只需将模块信息导出,然后到机器2上在线安装)
机器1:
1.首先在cmd命令行下,激活虚拟环境;
2.在项目目录下新建一个whl文件夹(用来存储我们依赖包)然后在虚拟环境cmd命令下切换到whl目录执行 pip freeze>requirements.txt (有网导出)
3.若机器2无网络,先在机器1上将包下载到whl目录下(有网也可以用此方法,这样可以减少在机器2下载安装包时间)。在whl目录下执行虚拟环境cmd命令 pip download -d . -r requirements.txt  (无网导出)(注意download后边的点,代表是下载到当前目录,并且requirements.txt存在于当前目录中,否则会报错);
机器2:
1.新建虚拟环境,并将项目目录放入该虚拟环境中;
2.激活虚拟环境;
3.虚拟环境cmd命令进入机器1复制过来的项目下whl目录,并执行安装命令。
   1)机器2有网情况通过requirements.txt包信息安装:pip install -r requirements.txt (有网安装)
   2)机器2无网情况通过机器1下载的包安装:pip install --no-index --find-links=. -r requirements.txt (无网安装) (注意命令中的.点 代表是当前目录也就是whl目录,也是下载的包和requirements.txt所在目录)

以上步骤完成后,就可以在机器2正常使用虚拟环境了。

虚拟环境迁移后路径修改

Python项目位置迁移后,其虚拟环境很可能使用不了。此时,需要修改虚拟环境修改路径。

1.修改虚拟环境根目录下 pyvenv.cfg 文件中的python.exe路径。

 2.修改虚拟环境目录 /Scripts/activate.bat 文件中 VIRTUAL_ENV 参数的值,改为当前虚拟环境的路径。

   

  至此,转载请注明出处。

[ 本站相关链接:>>Django部署 ]

posted @ 2018-05-21 22:39  失恋的蔷薇  阅读(1988)  评论(0编辑  收藏  举报