如何在 Ubuntu 中设置和使用虚拟 python 环境?

Ger*_*ger 78 package-management python virtualenv

Python虚拟环境用于创建隔离的python环境,避免依赖和版本冲突,也间接处理权限问题。但是在 Ubuntu 中设置和使用它的最简单方法是什么?

Ger*_*ger 107

使用virtualenvwrapper(用于 的功能的用户友好包装virtualenv

安装 virtualenv

安装virtualenv使用

sudo apt install virtualenv
Run Code Online (Sandbox Code Playgroud)

安装 virtualenvwrapper

我们还安装virtualenvwrapper的原因是它提供了很好且简单的命令来管理您的虚拟环境。有两种安装方式virtualenvwrapper

作为 Ubuntu 包(来自 Ubuntu 16.04)

sudo apt install virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)

然后运行

echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

使用点子

  1. 安装和/或更新 pip

    为 Python 2 安装 pip

    sudo apt install python-pip
    
    Run Code Online (Sandbox Code Playgroud)

    或 Python 3

    sudo apt install python3-pip
    
    Run Code Online (Sandbox Code Playgroud)

    (如果您使用 Python 3,您可能需要在本指南的其余部分使用pip3而不是使用pip)。

    可选(但推荐):为 pip 打开 bash 自动完成

    pip completion --bash >> ~/.bashrc
    
    Run Code Online (Sandbox Code Playgroud)

    并运行source ~/.bashrc以启用。

  2. 安装 virtualenvwrapper

    因为我们想避免sudo pipvirtualenvwrapper在本地安装(默认在 下~/.local):

    pip install --user virtualenvwrapper
    
    Run Code Online (Sandbox Code Playgroud)

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
    
    Run Code Online (Sandbox Code Playgroud)
  3. 源 virtualenvwrapper 在 .bashrc

    echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc
    
    Run Code Online (Sandbox Code Playgroud)

设置 virtualenv 和 virtualenvwrapper:

首先,我们导出WORKON_HOME包含要存储虚拟环境的目录的变量。让我们做这个~/.virtualenvs

export WORKON_HOME=~/.virtualenvs
Run Code Online (Sandbox Code Playgroud)

现在也创建这个目录

mkdir $WORKON_HOME
Run Code Online (Sandbox Code Playgroud)

并将此导出放入我们的~/.bashrc文件中,以便自动定义此变量

echo "export WORKON_HOME=$WORKON_HOME" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

我们还可以添加一些额外的技巧,如下所示,确保如果pip创建额外的虚拟环境,它也会放在我们的WORKON_HOME目录中:

echo "export PIP_VIRTUALENV_BASE=$WORKON_HOME" >> ~/.bashrc 
Run Code Online (Sandbox Code Playgroud)

源 ~/.bashrc 加载更改

source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

测试它是否有效

现在我们创建我们的第一个虚拟环境。该-p参数是可选的,用于设置要使用的 Python 版本;它也可以python3是例如。

mkvirtualenv -p python2.7 test
Run Code Online (Sandbox Code Playgroud)

您将看到环境将被设置,并且您的提示现在包括括号中的活动环境的名称。另外,如果你现在运行

python -c "import sys; print sys.path"
Run Code Online (Sandbox Code Playgroud)

您应该看到很多,/home/user/.virtualenv/...因为它现在不使用您的系统站点包。

您可以通过运行来停用您的环境

deactivate
Run Code Online (Sandbox Code Playgroud)

如果你想再次处理它,只需输入

workon test
Run Code Online (Sandbox Code Playgroud)

最后,如果你想删除你的环境,输入

rmvirtualenv test
Run Code Online (Sandbox Code Playgroud)

享受!


感谢这篇博文的作者。

  • `python-pip` 和 `python-virtualenv` 可通过 Ubuntu 库安装,无需手动安装。 (2认同)
  • 但是,在 Ubuntu 中,我们推荐 Ubuntu 软件包,原因有很多。旧版本的 pip 或 virtualenv 没有任何问题,它们完全有能力。 (2认同)

edw*_*ksl 9

虚拟环境提供了一种在每个项目的基础上管理和隔离依赖项的方法。此外,他们还避免了整个sudo pip install情况,正如我在https://askubuntu.com/a/802594/15003 中解释的那样,这是一种安全风险。官方 Python 文档也鼓励使用虚拟环境

为 Python 2 和 Python 3 创建和使用虚拟环境的最简单方法是virtualenv使用apt或进行安装apt-get。对于每个 Python 项目,创建一个 virtualenv,然后激活它。请注意,virtualenv 特定于特定的 Python 版本。激活后,pip无论您使用的是Python 2还是3,都可以照常安装Python包;pip3Python 3无需使用。sudo仅用于安装virtualenv,不用于与 一起使用pip,因此避免了上述安全风险。这样做的命令是:

sudo apt update
sudo apt install virtualenv
cd ~/desired_directory  # cd to desired_directory
virtualenv venv  # create virtualenv named venv for default system Python, which is Python 2 for Ubuntu
source venv/bin/activate  # activate virtualenv
pip install -U pip  # upgrade pip in case it is outdated
pip install desired_package  # install desired_package
Run Code Online (Sandbox Code Playgroud)

如果您想为 Python 3 创建一个 virtualenv,请替换virtualenv venv为:

virtualenv venv -p python3
Run Code Online (Sandbox Code Playgroud)

virtualenvhttps://virtualenv.pypa.io/en/stable/阅读更多关于各种花里胡哨的信息。