问题描述
Python虚拟环境用于创建隔离的python环境,以避免依赖和版本冲突,并间接处理权限问题。但是在Ubuntu中设置和使用它的最简单方法是什么?
最佳解决思路
使用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
用pip
-
安装和/或更新点子
用Python安装pip for Python
sudo apt-get install python-pip
或者用于Python 3
sudo apt-get install python3-pip
(如果使用Python 3,则可能需要在本指南的其余部分中使用
pip3
而不是pip
)。可选(但推荐):为pip启用bash自动完成功能
跑
pip completion --bash >> ~/.bashrc
并运行
source ~/.bashrc
以启用。 -
安装virtualenvwrapper
因为我们想要避免使用
sudo pip
,所以我们在本地安装virtualenvwrapper
(默认情况下在~/.local
下):pip install --user virtualenvwrapper
和
echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.bashrc
-
源代码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
我们还可以像下面这样添加一些extra tricks,这样可以确保如果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/...
,因为它现在不使用你的系统site-packages。
您可以通过运行来停用您的环境
deactivate
如果你想再次使用它,只需输入
workon test
最后,如果要删除环境,请键入
rmvirtualenv test
请享用!
感谢this blogpost的作者。
次佳解决思路
虚拟环境提供了一种管理和隔离per-project依赖关系的方法。此外,它们还避免了整个sudo pip install
情况,这是一个安全风险,正如我在https://askubuntu.com/a/802594/15003中所解释的那样。官方Python文档也是encourages the use of virtual environments。
为Python 2和Python 3创建和使用虚拟环境的最简单方法是使用apt或apt-get安装virtualenv。对于每个Python项目,创建一个virtualenv然后激活它。请注意,virtualenv特定于特定的Python版本。激活后,无论您使用的是Python 2还是3,都可以像往常一样使用pip来安装Python软件包;没有必要使用pip3 for Python 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
如果您想为Python 3创建virtualenv,请将virtualenv venv
替换为:
virtualenv venv -p python3
在https://virtualenv.pypa.io/en/stable/上阅读更多关于virtualenv
的各种铃声和口哨声。
第三种解决思路
这很容易,你安装python-virtualenv。然后,您可以使用virtualenv
命令创建virtualenv。有关更多信息,请参阅their documentation。
第四种思路
使用Python 3.3(和Ubuntu 15.10)提供的venv module
虚拟环境(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
。这可以避免混淆Python解释器pyvenv
连接到什么,从而虚拟环境将使用什么Python解释器。 (source)