学习使用Python的虚拟环境

102 阅读6分钟

我们一直在研究大量的Python编程,并测试了很多Python软件包。为了做到这一点,当然,我们需要在我们工作的计算机上安装Python。正如我们所知,Python带有一个神奇的软件包管理器,叫做PIP。PIP使得下载和安装Python中的任何一个奇妙的库变得超级容易。这里有一个问题。当你开始安装越来越多的软件包时,你可能会遇到一些问题。在软件中,很多时候,少即是多。因此,与其在你的机器上全盘安装这么多的Python库,不如使用Python虚拟环境,只使用某个特定项目所需的库。


Python 标准库

一旦你安装了Python,你就可以访问Python标准库。Python 中的标准库是为普通编程任务提供的库。它包括提供系统功能的内置模块,如输入/输出,以及用Python编写的模块,为日常编程中出现的许多问题提供标准化的解决方案。


Python PIP

Python标准库对于用Python编程做各种事情都很好。然而,Python 的部分乐趣在于利用所有可用的Python 库。我们使用PIP 来安装这些软件包。PIP 是 Python 的软件包管理器。它是一个工具,使安装不属于标准库的库成为可能。一旦你开始玩PIP,你很可能会发现自己在你的机器上安装了各种软件,这很好!但是,它的缺点是,在安装过程中,你可能会遇到一些问题。然而,缺点是在一段时间后,你可能会有这么多不同的库,以至于它们开始发生冲突并产生意想不到的结果。这就是virtualenv发挥作用的地方。


Python Virtualenv

什么是 Python 虚拟环境?

一个合作隔离的运行环境,它允许 Python 用户和应用程序安装和升级 Python 发行包,而不干扰在同一系统上运行的其它 Python 应用程序的行为。

检查 Python 版本

好的,这听起来很有趣,所以让我们建立一个虚拟环境并使之工作。首先,我们需要确保Python已经安装。简单地在命令行中输入pythonpython -v就可以了。

check python version

如果你确实像我们刚才那样进入了Python shell,你可以通过输入*exit()*然后点击回车键退出。

how to exit python shell

验证PIP的安装

我们将使用PIP来安装virtualenv模块,所以首先,我们需要确保PIP本身已经准备好了。在终端键入pip freeze,应该会有一些输出,显示当前安装的所有 Python 库。

output of pip freeze

输出显示我们有 asgiref, astroid, autopep8, colorama, Django, django-debug-toolbar, isort, lazy-object-proxy, mccabe, MouseInfo, Pillow, PyAutoGUI,pycodestyle, PyGetWindow, pylint, PyMsgBox, pyperclip, PyRect, PyScreeze, PyTweening, pytz, six, sqlparse, virtualenv, virtualenvwrapper-win, and wrapt已安装。通过使用虚拟环境,我们就可以从一个干净的地方开始。

放置虚拟环境的文件夹

你可以在你的机器上创建或导航到一个目录来存放你的虚拟环境。为你工作的每个项目简单地创建一个新的虚拟环境并不是一个坏主意。这样你就可以有一个用于Django的虚拟环境,一个用于Flask,一个用于Numpy,等等。我们将简单地使用一个文件夹,位于 **/c/python**像我们看到的那样。

hyper pwd output

安装virtualenv

现在在你选择的目录下的命令提示符下输入 pip install virtualenv.一旦完成,你应该能够再次运行 **pip freeze**再次运行,virtualenv应该是其中一个可用的软件。

添加一个文件夹来存放你的virtualenv

在我们选择的路径中。 /c/python,让我们添加一个父目录来存放我们将要创建的virtualenv。我们可以创建venv1,然后换成venv1。

virtualenv parent directory

创建一个虚拟环境

我们已经准备好创建一个虚拟环境了!我们将在命令行输入 **virtualenv .**像这样在命令行中输入

venv1 $virtualenv .
Using base prefix 'c:\users\yourname\appdata\local\programs\python\python38-32'
New python executable in C:pythonvenv1Scriptspython.exe
Installing setuptools, pip, wheel...
done

现在我们可以输入 **ls**我们应该看到新的文件和文件夹,如Include/, LICENSE.txt, Lib/, Scripts/, and tcl/。

python virtualenv folder contents


激活!

一切都准备就绪了。在你使用你的新virtualenv之前,你需要激活它。这可以通过输入 **source ./Scripts/activate*在virtualenv文件夹中输入这应该会激活虚拟环境,并且会出现一个新的提示,如(venv1) venv1 $*表示venv1虚拟环境现在已经激活。

source scripts activate

注意没有软件包

在virtualenv中,你现在可以再次输入pip freeze来列出任何已安装的Python模块。提示:现在应该还没有任何模块!这是你的白板,已经准备好进行开发了。

pip freeze virtualenv

在Virtualenv中安装Django

Django将是我们在这个虚拟环境中安装的第一个软件包,输入pip install django。让我们开始吧!

(venv1) venv1 $pip install Django
Collecting Django
  Using cached Django-3.0.3-py3-none-any.whl (7.5 MB)
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.3.1-py2.py3-none-any.whl (40 kB)
Collecting pytz
  Using cached pytz-2019.3-py2.py3-none-any.whl (509 kB)
Collecting asgiref~=3.2
  Using cached asgiref-3.2.3-py2.py3-none-any.whl (18 kB)
Installing collected packages: sqlparse, pytz, asgiref, Django
Successfully installed Django-3.0.3 asgiref-3.2.3 pytz-2019.3 sqlparse-0.3.1
(venv1) venv1 $pip freeze
asgiref==3.2.3
Django==3.0.3
pytz==2019.3
sqlparse==0.3.1
(venv1) venv1 $

通过安装Django,我们可以看到一些额外的依赖项也被安装了,比如asgiref、pytz和sqlparse。这就是在虚拟环境中工作的好处。它就像一种组织和管理你的软件、项目和代码的方式,而不必建立一个完整的虚拟机或容器工作流程。

启动一个Django项目

现在让我们继续前进,通过输入django-admin startproject djangoproject,在我们所建立的虚拟环境中创建一个新的Django项目。

new django project in virtualenv

运行Django项目成功了!

(venv1) djangoproject $python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you
apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
March 03, 2020 - 13:08:56
Django version 3.0.3, using settings 'djangoproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

爆炸了!

django virtual environment

现在让我们用Ctrl-C停止服务器。

stop the django server


停用

当你在虚拟环境中完成某个项目的工作时,你应该停用虚拟环境。要做到这一点,只需在给定的虚拟环境的命令行中输入deactivate

deactivate virtualenv

Python 虚拟环境总结

使用Virtualenv并不是Python开发的必经之路,尤其是在刚开始的时候。在开始的时候,你需要做的就是安装好 Python,然后你就可以开始修补语言,学习变量、语句、表达式、循环、函数等等。当你开始使用PIP软件包管理器来利用更多的Python软件包时,开始隔离每个项目是有意义的。通过这种方法,你可以解决依赖关系和版本的问题,有时还有权限问题。想象一下,你有一个应用程序需要版本1的HappyTime,但另一个应用程序需要版本2的HappyTime。如果你把所有的东西都安装到你的主机python中,你就会出现两个包的要求冲突的情况。为了解决这个问题,我们为我们工作的每个不同的Python项目设置了一个virtualenv。在本教程中,我们做了以下工作。

  • 了解了什么是 Python 虚拟环境
  • 检查了我们的 Python 安装版本
  • 确保PIP已经安装
  • 添加了一个目录来存放virtualenvs
  • 安装了virtualenv软件
  • 创建了一个新的virtualenv
  • 激活了virtualenv
  • 在virtualenv中安装了Django
  • 在virtualenv中创建了一个新的Django项目
  • 在virtualenv中启动了一个Django服务器
  • 停用了虚拟环境