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


73

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

Answers:


99

带有virtualenvwrapper(用户友好的包装器的功能virtualenv

安装virtualenv

virtualenv与安装

sudo apt-get install virtualenv

(对于Ubuntu 14.04(可信任)安装python-virtualenv

安装virtualenvwrapper

我们也安装virtualenvwrapper的原因是因为它提供了用于管理虚拟环境的简单好命令。有两种安装方法virtualenvwrapper

作为Ubuntu软件包(来自Ubuntu 16.04)

sudo apt install virtualenvwrapper

然后跑

echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc

使用点

  1. 安装和/或更新点子

    为Python 2安装pip

    sudo apt-get install python-pip

    或适用于Python 3

    sudo apt-get install python3-pip

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

    可选(但推荐):开启Bash自动完成点子

    pip completion --bash >> ~/.bashrc

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

  2. 安装virtualenvwrapper

    因为我们要避免,所以sudo pip我们使用以下命令virtualenvwrapper在本地安装(默认情况下为~/.local):

    pip install --user virtualenvwrapper

    echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
  3. 源virtualenvwrapper在 .bashrc

    echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc

设置virtualenv和virtualenvwrapper:

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

export WORKON_HOME=~/.virtualenvs

现在也创建该目录

mkdir $WORKON_HOME

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

echo "export WORKON_HOME=$WORKON_HOME" >> ~/.bashrc

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

echo "export PIP_VIRTUALENV_BASE=$WORKON_HOME" >> ~/.bashrc 

源〜/ .bashrc加载更改

source ~/.bashrc

测试是否有效

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

mkvirtualenv -p python2.7 test

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

python -c "import sys; print sys.path"

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

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

deactivate

如果您想再次处理它,只需键入

workon test

最后,如果要删除环境,请键入

rmvirtualenv test

请享用!


感谢这篇博客的作者。


2
python-pip并且python-virtualenv可以通过Ubuntu代表进行安装,无需手动安装。
Timo 2013年

2
但是,出于许多原因,在Ubuntu中,我们建议使用Ubuntu软件包。较早版本的pip或virtualenv没什么问题,它们功能强大。
风滚草

1
@GerhardBurger:如果创建python3 virtualenv,它将获得一个在python3中有效的点子。如果您使用Ubuntu的virtualenv创建virtualenv,那么您所做的一切都将包含在virtualenv中。如果您开始使用sudo easy_installing东西,它将在/ usr / local上留下混乱,清理起来很简单,没有太多收获。
风滚草

看起来现在不需要别名了:--no-site-packages默认且--distribute已弃用
int_ua 2013年

如果mkvirtualenv test不工作,也看到:stackoverflow.com/questions/15608236/...
尼科斯Alexandris

8

虚拟环境提供了一种基于每个项目管理和隔离依赖项的方法。此外,它们还避免了整个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软件包。无需pip3用于Python3。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

如果要为Python 3创建virtualenv,请替换virtualenv venv为:

virtualenv venv -p python3

virtualenvhttps://virtualenv.pypa.io/en/stable/上了解有关各种风声的更多信息。


1
source为我节省了很多命令
vnpnlz

OSERROR:[错误40]层次过多符号链接:'在/ var / www / html等/蟒蛇/检查/ VENV /斌/ Python的
Saravanan Nandhan

@SaravananNandhan请问一个新问题,提供必要的详细信息。
edwinksl


3

使用Python 3.3(和Ubuntu 15.10)提供的venv模块

虚拟环境(venvs)如此流行,以至于该功能现在已包含在python本身中(从3.3开始)。要在Ubuntu上使用它,您需要安装python3-venv(由于该ensurepip模块不可用):

sudo apt-get install python3-venv

之后,您可以使用

pyvenv myvirtualenv

创建一个名为的虚拟环境myvirtualenv。然后,您可以使用

source myvirtualenv/bin/activate

激活虚拟环境。要取消激活,只需键入

deactivate

编辑:pyvenv不赞成使用 该脚本python3 -m venv。这避免了关于pyvenv连接到哪个Python解释器以及由此虚拟环境将使用哪个Python解释器的混淆。(来源

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.