CentOS7安装python虚拟环境 - 印象云

好久不见,终于回归!

CentOS7安装python虚拟环境

为什么要搭建虚拟环境?
问题:如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了.
解决方案 : 虚拟环境
作用 : 虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响.

在开发过程中, 便于控制python的web框架或工具包的版本,创建多个虚拟环境,就相当于我们在一台电脑上拥有了多个python解释器。

写在前面:建议python和pip设为一致,并且均设为python3,pip3,最好不要更改原系统默认的python->python2,pip->pip2

1、安装虚拟环境

采用豆瓣源安装(可忽略这步):

pip3 install -i https://pypi.douban.com/simple virtualenv

pip3 install -i https://pypi.douban.com/simple virtualenvwrapper

2、创建 virtualenv 软连接

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

3、 创建一个隐藏目录 .virtualenvs

[root@centos7~ ]# mkdir /root/.virtualenvs

所有的虚拟环境都放在此目录下

4、配置环境变量,增加最后两行

在尾部添加以下内容:

注意:在最后加入如上两行配置,一个是刚才创建的存放虚拟环境的路径,另外一个是安装的virtualenvwrapper.sh脚本的路径,使用哪个pip下载的,virtuallenv、virtualenvwrapper.sh就对应在安装的python文件夹的bin目录下, 可以先找到这个文件的位置:

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

# 虚拟环境存放目录,可自行设置
export WORKON_HOME=/root/.virtualenvs

# virtualenvwrapper.sh命令的位置,可通过命令 find / -name virtualenvwrapper.sh 查找
source /usr/local/python3/bin/virtualenvwrapper.sh

使修改后的.bashrc文件生效:source ~/.bashrc

使virtualenvwrapper命令生效:
source /usr/local/python3/bin/virtualenvwrapper.sh

5、virtualenvwrapper常用命令

  1. 创建虚拟环境:mkvirtualenv [ 虚拟环境名称 ]
  2. 进入指定的虚拟环境:workon [ 虚拟环境名称 ]
  3. 删除虚拟环境:rmvirtualenv [ 虚拟环境名称 ]
  4. 列出所有的虚拟环境:lsvirtualenv
  5. 在虚拟环境激活态下进入到虚拟环境所在的目录:cdvirtualenv [ 虚拟环境名称 ]
  6. 退出虚拟环境:deactivate

6、测试

(1)创建一个测试的虚拟环境名为 venv:mkvirtualenv venv

(2)创建完成后自动进入 venv 虚拟环境

(3)可以查看在虚拟环境目录中( /root/.virtualenvs )已经创建为 venv 虚拟环境的文件夹

(4)退出虚拟环境:deactivate

7、错误

如果报错:一般有三种错误:

第一种:

no module named virtualenvwrapper,找不到这个模块,测试的时候会出现的问题,因为我们上面配置的时候,配置的是python3的路径,故创建虚拟环境的时候,要用python3的这个软连接,一般建议将python解释器的软连接只设置一个,设置多了也会出现问题 Too many levels of symbolic links 软连接过多,指向不明确的问题。

当出现No module named virtualenvwrapper这种错误,一般就是软连接的版本变了,查看一下:

python -V
pip -V

要使这两个是同一个源版本的,要是变了,删除原来的软连接,重新设置就好了

rm /usr/bin/python
rm /usr/bin/pip

设置如下软连接的时候,要保证python和pip是同一个源下载的,也就是下载python3.7的时候,安装好之后在bin目录下的python3和pip3

ln -s /usr/local/python3/bin/python3 /usr/bin/python(注意python3->python3更提倡,我就是这样做的)
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip (注意pip3->pip3更提倡,我就是这样做的)

第二种:

which: no virtualenv in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
这个是在创建虚拟环境的时候出现的问题:这个就是没有设置 virtualenv 软连接的问题,大多数情况都是有的,但有时候没有,网上大多数教程里在安装的时候,没有说这一点。

ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

设置一下就好了

第三种,注意登录服务器报错

发生以下错误:

/usr/bin/python: No module named virtualenvwrapper virtualenvwrapper.sh: There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader,
check that virtualenvwrapper has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is set properly.

原因是在virtualenvwrapper.sh中有以下代码 :

所以,在virtualenvwrapper初始化时,命令“which python”调用的是python2.7,而我的virtualenvwrapper是由pip3下载,所以会有错误“No module named virtualenvwrapper

解决办法:直接修改其command语句

分享