Linux环境下python虚拟环境virtualenv安装和使用

virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:

1. 在没有权限的情况下安装新套件

2. 不同应用可以使用不同的套件版本

3. 套件升级不影响其他应用

一、virtualenv的使用

通过pip安装virtualenv:

pip install virtualenv

测试安装:

virtualenv --version

为一个工程项目搭建一个虚拟环境:

cd my_project
virtualenv my_project_env

另外,如果存在多个python解释器,可以选择指定一个Python解释器(比如``python2.7``),没有指定则由系统默认的解释器来搭建: 

virtualenv -p /usr/bin/python2.7 my_project_env

将会在当前的目录中创建一个名my_project_env的文件夹,这是一个独立的python运行环境,包含了Python可执行文件, 以及 pip 库的一份拷贝,这样就能安装其他包了,不过已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境来。

如果已经安装了一些第三方库在系统的 site-packages 目录中,希望在新的虚拟环境中也可以使用它们,那么你可以使用 --system-site-packages 选项:

virtualenv --system-site-packages my_project_env

要开始使用虚拟环境,其需要被激活:

linux:
source my_project_env/bin/activate

window 10:
> cd D:\WWW\flask\movie_env\scripts # 先进入启动目录
D:\WWW\flask\movie_env\scripts > ./activate # 启动虚拟机

下提示权限错误信息:
.\activate : 无法加载文件 H:\envproject\venv\Scripts\activate.ps1,因为在此系统上禁止运行脚本。
有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 
中的about_Execution_Policies。所在位置 行:1 字符: 1
解决办法:
1.以管理员身份打开PowerShell
2.执行命令 set-executionpolicy remotesigned

停用虚拟环境:停用后将回到系统默认的Python解释器

deactivate

删除:

删除虚拟机可以直接删除目录:rm -rf my_project_env

二、virtualenvwrapper 虚拟环境集中管理库

virtualenvwrapper 是一个基于 virtualenv 之上的工具,它将所有的虚拟环境集中起来管理。

2.1、安装

pip install virtualenvwrapper # 命令会自动安装 virtualenvwrapper 及其依赖包 virtualenv, virtualenv-clone。

virtualenvwrapper 默认将所有虚拟环境放在 ~/.virtualenvs 目录下管理,可以修改环境变量 WORKON_HOME 来指定虚拟环境的保存目录。

2.2、启动

source /usr/local/python/bin/virtualenvwrapper.sh 
# 运行命令来启用 virtualenvwrapper;virtualenvwrapper.sh 在 python 安装目录下

可以将该命令添加到 ~/.bashrc 或 ~/.profile 等 shell 启动文件中,以便登录 shell 后可以直接使用 virtualenvwrapper 提供的命令。

启动时报错:

/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.

错误原因:是因为系统中存在两个或多个 python 的版本,如果是使用的 python 3.x 就需要修改环境变量参数,这里默认的是python 3。

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

2.3、用法

1. 创建虚拟环境

mkvirtualenv env 命令表示在 WORKON_HOME 目录下创建了一个 env 虚拟环境。

2. 启动虚拟环境

workon env 命令表示启用了 env 虚拟环境。workon 命令会自动停用当前所处的虚拟环境(如果存在的话)然后启动指定的虚拟环境,这样你就可以快速在各个虚拟环境之间切换。另外 workon 命令还提供了虚拟环境名称自动补完功能以帮助你选择虚拟环境。

3. 退出虚拟环境

执行 deactivate 命令退出虚拟环境。

4. 删除虚拟环境

执行 rmvirtualenv env 命令删除 env 虚拟环境。

5. 其他命令

  • lsvirtualenv 显示所有虚拟环境。
  • cdvirtualenv 跳转至当前虚拟环境目录,方便查看虚拟环境的 site-packages 目录。
  • cdsitepackages 直接跳转至当前虚拟环境的 site-packages 目录。
  • lssitepackages 显示当前虚拟环境的 site-packages 目录内容。

三、autoenv 库

autoenv 可以让你进入一个含有 .env 文件的目录时,自动执行 .env 文件来设置系统环境。

如果进入某个项目目录时自动激活它所对应的虚拟环境,那么可以在 .env 文件中配置激活期待的虚拟环境。

3.1、安装

pip install autoenv # 命令自动安装 autoenv 工具。

3.2、启动

source /usr/local/opt/autoenv/activate.sh 

可以将该命令添加到 ~/.bashrc 等 shell 启动文件中。

3.3、用法

为项目设置特定的系统环境,那么可以在项目根目录下面新建一个 .env 文件,将所需设定的系统环境写在 .env 文件中。

当启用 autoenv 后,它会自动执行 .env 文件。

例如进入 workspaces 目录自动退出虚拟环境,编辑 workspaces/.env 添加以下内容:

BASE_PATH=`dirname "${BASH_SOURCE}"` 
PWD=`pwd`

if [[ "${BASE_PATH}" == "${PWD}" ]]
then
    declare -f -F deactivate &>/dev/null

    if [[ "${?}" == "0" ]]
    then
        deactivate
    fi
fi

又例如进入 workspaces/project 目录自动激活虚拟环境,编辑 workspaces/project/.env 添加以下内容:

BASE_PATH=`dirname "${BASH_SOURCE}"`
PWD=`pwd`

if [[ "${BASE_PATH}" == "${PWD}" ]]
then
    if [[ -e bin/activate ]]
    then
        source bin/activate
    fi
fi

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章