Python虚拟环境用于创建独立的Python环境,以避免依赖和版本冲突,并间接解决权限问题。但在Ubuntu中,设置和使用Python虚拟环境的最简单方法是什么?
virtualenvwrapper
(对virtualenv
功能的用户友好封装)使用以下命令安装virtualenv
sudo apt install virtualenv
我们安装virtualenvwrapper的原因是它提供了简单易用的命令来管理您的虚拟环境。有两种方法可以安装virtualenvwrapper
:
运行以下命令:
sudo apt install virtualenvwrapper
echo "source /usr/share/virtualenvwrapper/virtualenvwrapper.sh" >> ~/.bashrc
安装和/或更新pip
使用以下命令为Python 2安装pip:
sudo apt install python-pip
或者对于Python 3:
sudo apt install python3-pip
(如果您使用的是Python 3,在本指南的其余部分中可能需要使用pip3
而不是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
在.bashrc
文件中添加virtualenvwrapper源码
echo "source ~/.local/bin/virtualenvwrapper.sh" >> ~/.bashrc
首先,我们导出包含虚拟环境存储目录的 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
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
享受吧!
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
virtualenv venv
替换为:virtualenv venv -p python3
virtualenv
的各种花里胡哨的内容,请访问https://virtualenv.pypa.io/en/stable/。source
让我省了很多指令 - MuntingInsekto虚拟环境(venv)非常受欢迎,以至于现在已经包含在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 解释器。(source)
python-pip
和python-virtualenv
可以通过Ubuntu软件仓库进行安装,无需手动安装。 - Timo--no-site-packages
是默认设置,而--distribute
已经被弃用。 - int_uamkvirtualenv test
不起作用,请参考:http://stackoverflow.com/questions/15608236/eclipse-and-google-app-engine-importerror-no-module-named-sysconfigdata-nd-u - Nikos Alexandrissudo pip install
的指令是本质上错误的。你对此有何看法? - floatingpurrsudo pip
了,现在每个人都应该很开心 ;) - Gerhard Burger~/.local/bin/virtualenvwrapper.sh
中硬编码了/usr/bin/python
,所以你的指令不能直接在python3上运行。你可以尝试使用pip3 install --user virtualenvwrapper
。 - raphaelVIRTUALENVWRAPPER_PYTHON
没有设置,它会执行which python
命令,该命令将返回/usr/bin/python
,因为这是默认的 Python(https://www.python.org/dev/peps/pep-0394/)。你需要执行export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
来使其正常工作,我会将此添加到说明中。 - Gerhard Burgerpip install --user pip
命令进行安装,以获取最新版本的pip作为用户安装。 - mkasberg--user
标志的情况下,pip install -U pip
是错误的。(-U
是--upgrade
;--user
没有短选项。)如果你不使用--user
,它会干扰由apt管理的安装过程,可能会导致一些奇怪的状态,并且可能无法在没有sudo权限的情况下工作,就像你在第2步中提到的virtualenvwrapper一样。 - mkasberg~/.local/bin
,否则pip
仍然会执行系统的pip。综合考虑,我觉得升级pip不值得额外的努力,所以我决定再次删除升级pip的指示。 - Gerhard Burger