如何为python项目创建虚拟环境

我们在开始一个Python项目,而不是几行简单的代码时,我们倾向于开始使用第三方的dependencies.当项目越来越大时,我们需要考虑如何有效的管理这些第三方库 。当安装第三方库时,我们肯定是想安装在虚拟环境中 。帮助我们保持我们实际系统环境的干净,避免打乱整个系统python环境 。
我们为什么需要python的虚拟环境?我们可以使用pip把第三方库安装到python项目中 。一个项目中往往要安装多个,鉴于安装的第三方库的各种版本,可能会导致一些兼容和运行的问题 。
当我们在python项目中使用pip install <package name>,我们是安装到全局python下的,将会根据现有的python版本安装第三方包 。
我们可以通过以下命令来查找python的安装目录:
python -c "import sys;print('n'.join(sys.path))"输出:C:UsersAdministrator.*AppDataLocalProgramsPythonPython36python36.zipC:UsersAdministrator.*AppDataLocalProgramsPythonPython36DLLsC:UsersAdministrator.*AppDataLocalProgramsPythonPython36libC:UsersAdministrator.*AppDataLocalProgramsPythonPython36C:UsersAdministrator.*AppDataLocalProgramsPythonPython36libsite-packages如果我们使用pip3 install <package name>,将会安装到python3安装目录的单独的目录下 。我们可以用以下命令来覆盖pip3这个命令:
python2.7 -m pip install <package name>但是这仍然解决不了我们在全局python下安装第三方库的问题,将会出现下列的问题:

  • 不同python项目之间会使用不同版本的第三方库,可能会导致互相冲突
  • 项目的依赖库和操作系统的依赖库会产生冲突,导致出现项目错误或系统错误 。
  • 多用户项目将很难实现 。
  • 不同版本python和库的代码测试将会是一个挑战
为了避免以上的问题,python开发者使用虚拟环境 。这个虚拟环境把安装的这些第三方库在一个隔离的环境中(目录内)保存 。
如何创建一个虚拟环境确保你的系统上已经安装python
python --version然后看一下pip是否也能正常调用
pip --version【如何为python项目创建虚拟环境】我们需要一个工具来创建python的虚拟环境,venv 。它是封装在python3.3+版本以上的python中的 。
如果我们使用python2,我们需要手动安装一个工具 。这是为数不多的一个我们需要全局安装的第三方库 。
python2 -m pip install virtualenv注意:我们将会在文章中讨论很多venv和python3,操作系统环境不同,可能会导致某些命令的些许不同,某些工具的工作原理也些许不同 。
如果你的系统上没有安装pip:
sudo apt-get install python-pip然后安装virtualenvpip install virtualenv我们首先要为项目创建一个文件夹,并进入这个文件夹:
mkdir my-python-project && cd my-python-project然后我们再创建虚拟环境:
python3 -m venv virtualenv#创建一个名为virtualenv的虚拟环境给,可以是任何名字这将会创建一个名为virtualenv的目录,这个目录将会包含bin、lib、include文件夹,还有一个环境配置文件 。
所有的文件都是为了确保,所有的代码都运行在当前的虚拟环境下 。这会帮我们把工作环境和操作系统环境隔离开来,避免我们之前提到的问题 。
为了使用这个虚拟环境,我们需要激活它 。激活以后,还会更改我们的命令提示符标志 。这个标志也是为了表明虚拟环境已经激活,python的代码都是在这个环境下执行 。
#UBUNTU linux系统激活虚拟环境$ source env/bin/activate(virtualenv) $#windows激活虚拟环境E:my-python-projectvirtualenvScripts>activate(virtualenv)E:my-python-projectvirtualenvScripts>activate在虚拟环境下,无法访问使用全局的第三方库,在虚拟环境内安装的库也无法在外部使用 。
在虚拟环境中,只有pip和setuptools是默认安装的 。
激活虚拟环境后,变量path也会相应地发生改变,以达到虚拟环境的目的 。
当我们完成工作,想切换回操作系统的全局环境,我们需要使用deactivate退出虚拟环境 。
#linux ubuntu下(virtualenv) $ deactivate $#windows系统下(virtualenv) E:my-python-projectvirtualenvScripts>deactivateE:my-python-projectvirtualenvScripts>如何管理虚拟环境下的第三方库我们配置了虚拟环境并激活以后,我们不想在分享项目时,连同使用pip install命令安装的第三方库也一起分享 。我们想去除我们的虚拟环境文件夹,但仍然可以在其他的电脑或系统上重新运行我们的工作 。


推荐阅读