Python虚拟环境设置
2018-4-2更新:
centos7创建虚拟环境
在最新的CentOS版本7.3中,自带的Python版本依旧是2.7,而Django的建议版本已经到了3.x。所以需要安装新版本的Python,同时保留旧的Python环境。
首先安装epel源
1
|
yum install epel–release
|
查看可用的python3版本
1
|
yum list python3*
|
可以看见列表里提供Python 3.4
1
|
yum –y install python34
|
下面安装pip,python2.7和pyhon3.4的pip是可以同时存在的,默认分别为pip,pip3
1
2
|
yum install python–pip # 安装python2.7的pip
yum install python34–pip # 安装python3.4的pip,两者可以同时存在
|
查看pip版本信息
1
2
3
4
|
~# pip -V
pip 8.1.2 from /usr/lib/python2.7/site–packages (python 2.7)
~# pip3 -V
pip 8.1.2 from /usr/lib/python3.4/site–packages (python 3.4)
|
其实是一个东西,不过安装在了不同目录下。一般使用其中一个就行了。例如安装virtualenv
1
|
pip3 install virtualenv
|
使用virtualenv创建python3虚拟环境
1
|
virtualenv venv –p /bin/python3 —no–site–packages
|
1、安装virtualenv
安装方法
1 2 |
pip install virtualenv #安装到python2中 pip3 install virtualenv #安装到python3中 |
2、安装virtualenvwrapper
安装方法
1 2 |
pip install virtualenvwrapper #安装到python2中 pip3 install virtualenvwrapper #安装到python3中 |
需要注意的是这两个都得装,如果只装python3的话,workon命令是用不了的。
设置
查找位置
1 |
find / -name virtualenvwrapper.sh |
结果我们将会查找到两个位置
1 2 |
/usr/local/python3/bin/virtualenvwrapper.sh #python3中的 /usr/bin/virtualenvwrapper.sh #python2中的 |
稍后我们用python3中的位置。
编辑配置文件
1 2 3 |
cd vim ~/.bashrc |
将以下两个命令添加到最后面,指定了虚拟环境的位置。
1 2 |
export WORKON_HOME=~/.virtualenvs source /usr/local/python3/bin/virtualenvwrapper.sh |
执行.bashrc使文件生效
1 |
source ~/.bashrc |
创建虚拟环境
1 |
mkvirtualenv -p /usr/bin/python3 blog_env_py3 |
这样我们就创建了虚拟环境blog_env_py3
通过workon命令就可以查看所有虚拟环境的目录,进入该虚拟环境
1 |
workon blog_env_py3 |
3、在虚拟环境中安装依赖包
进入windows中的blog_test中,执行如下命令,导出所有需要安装的包
1 |
pip freeze > requirements.txt |
通过winscp软件将生成的requirements.txt导入到linux中
进入linux中的虚拟环境blog_env_py3中,执行以下命令,即可安装其中的所有包
1 |
pip install -r requirements.txt |
其中安装mysqlclient==1.3.12时,会报错,需要再装一个依赖包
1 |
yum install mysql-devel |
通过pip list 检查安装的包。
virtualenv
virtualenv
是一个可以在同一计算机中隔离多个python版本的工具。有时,两个不同的项目可能需要不同版本的python,如 python2.6.6 / python3.0 ,但是如果都装到一起,经常会导致问题。所以需要一个工具能够将这两种或几种不同版本的环境隔离开来,需要哪个版本就切换到哪个版本做为默认版本。virtualenv 既是满足这个需求的工具。它能够用于创建独立的Python环境,多个Python相互独立,互不影响,能够:
- 在没有权限的情况下安装新套件
- 不同应用可以使用不同的套件版本
- 套件升级不影响其他应用
安装: pip install virtualenv
使用方法
创建环境
virtualenv [新环境名] :这会再当前目录下创建一个新环境目录 可使用 virtualenv –help 来查看如何使用。可以使用参数 –python=/usr/bin/python3 来创建一个已经安装的的Python环境。
使用环境
切换到新环境目录 执行:source ./bin/activate
来激活环境,激活后在命令行的前面会出现新环境名称 接下来可使用pip命令安装新环境需要的各种包。(pip命令在创建新环境时自带)
退出虚拟环境
deactivate
如果要删除虚拟环境,只需退出虚拟环境后,删除对应的虚拟环境目录即可。不影响其他环境。
注意事项
如果没有启动虚拟环境,系统也安装了pip工具,那么套件将被安装在系统环境中,为了避免发生此事,可以在~/.bashrc
文件中加上:export PIP_REQUIRE_VIRTUALENV=true
或者让在执行pip的时候让系统自动开启虚拟环境:export PIP_RESPECT_VIRTUALENV=true
virtualenvwrapper
virtualenvwrapper
是virtualenv
的扩展管理包,用于更方便管理虚拟环境,它可以做:
- 将所有虚拟环境整合在一个目录下
- 管理(新增,删除,复制)虚拟环境
- 切换虚拟环境
安装
pip install virtualenvwrapper
使用方法
初始配置
默认virtualenvwrapper安装在/usr/local/bin下面,实际上需要运行virtualenvwrapper.sh文件才行;所以需要先进行配置一下:
- 创建虚拟环境管理目录:
mkdir $HOME/.local/virtualenvs
- 在~/.bashrc中添加行:
-
1234567891011121314## virtualenvexport PIP_REQUIRE_VIRTUALENV=true #pip安装东西的时候不安装到本地环境export PIP_RESPECT_VIRTUALENV=true #在执行pip的时候让系统自动开启虚拟环境export WORKON_HOME=$HOME/virtualenvs #所有虚拟环境存储的目录export PIP_VIRTUALENV_BASE=$WORKON_HOME#source /usr/local/bin/virtualenvwrapper.shexport VIRTUALENV_USE_DISTRIBUTE=1 # 总是使用 pip/distributeif [ -e $HOME/.local/bin/virtualenvwrapper.sh ];thensource $HOME/.local/bin/virtualenvwrapper.shelse if [ -e /usr/local/bin/virtualenvwrapper.sh ];thensource /usr/local/bin/virtualenvwrapper.shfifi
- 启动 virtualenvwrapper:
source ~/.bashrc
使用方法
所有的命令可使用:virtualenvwrapper –help 进行查看,这里列出几个常用的:
创建基本环境:mkvirtualenv [环境名] 删除环境:rmvirtualenv [环境名] 激活环境:workon [环境名] 退出环境:deactivate 列出所有环境:workon 或者 lsvirtualenv -b
例如:
创建python3虚拟环境:
mkvirtualenv —python=/usr/local/bin/python3 py3
创建python2虚拟环境:
mkvirtualenv —python=/usr/local/bin/python2 myenv py2
这样会分别在~/.virtualenvs目录下创建两个目录: py3和py2
退出虚拟环境: deactivate
激活虚拟环境: workon py3
2 Comments
Brigid Loperena · 06/12/2020 at 1:11 PM
Hi, I desire to subscribe for this post to obtain most up-to-date updates, so where can i do it please help.
cbd oil for pain · 07/07/2020 at 9:48 PM
Greate article. Keep posting such kind of information on your blog.
Im really impressed by it.
Hi there, You have performed a great job. I will certainly
digg it and for my part suggest to my friends. I’m sure they will be benefited from this site.