构建Python虚拟环境虚拟环境是安全地使用Python版本和包的不同组合的关键。Python对管理虚拟环境的支持已经存在了一段时间。Python3.3甚至添加了内置的venv模块,用于创建没有第三方库的环境。Python程序员可以使用几种不同的工具来管理他们的环境,我使用的工具称为virtualenvwrapper。虚拟环境是一种将Python项目及其依赖项与系统安装的Python分开的方法。如果您使用的是macOS或基于Linux的操作系统,它可能会在安装过程中附带一个Python版本,事实上,它可能取决于特定版本的Python才能正常运行。但这是您的计算机,您可能希望将其用于您自己的目的。您可能需要安装与您的操作系统提供的版本不同的Python版本。您可能还需要安装一些额外的库。虽然您可以升级您的系统Python,但不推荐这样做。你也可以安装其他库,但你必须小心不要干扰系统依赖的任何东西。虚拟环境是创建安全修改不同版本的Python和不同包组合所需的隔离的关键。它们还允许您为不同的项目安装同一个库的不同版本,这解决了在同一环境下满足所有项目需求的不可能的问题。为什么选择virtualenvwrapper而不是其他工具?简而言之:与需要项目目录内部或旁边的venv目录的venv不同,virtualenvwrapper将所有环境保存在一个地方:默认情况下在~/.virtualenvs中。它提供创建和激活环境的命令,激活环境不依赖于找到正确的激活脚本。它只需要(从任何地方)workonprojectname而不是source~/Projects/flashylights-env/bin/activate。入门首先,花点时间了解您系统的Python是如何配置的以及pip工具是如何工作的。以树莓派系统为例,它同时安装了Python2.7和3.7。它还提供了pip的单独实例,每个版本一个:命令python运行Python2.7,位于/usr/bin/python中。命令python3运行Python3.7,位于/usr/bin/python3。命令pip安装Python2.7包,位于/usr/bin/pip。命令pip3安装位于/usr/bin/pip3中的Python3.7包。RaspberryPi上的Python命令在开始使用虚拟环境之前,验证python和pip命令的使用状态是很有用的。可以通过运行pipdebug或pip3debug命令找到有关pip实例的更多信息。我的计算机上运行UbuntuLinux的信息几乎相同(除了它是Python3.8)。在我的Macbook上它是相似的,除了唯一的系统Python是2.6,我用brew安装了Python3.8,所以它在/usr/local/bin/python3(连同pip3)。要安装virtualenvwrapper,您需要使用系统Python3中的pip安装virtualenvwrapper:sudopip3installvirtualenvwrapper下一步是配置shell以加载virtualenvwrapper命令。您可以通过编辑shell的RC文件(例如.bashrc、.bash_profile或.zshrc)并添加以下行来执行此操作:usr/local/bin/virtualenvwrapper.shbashrc如果您的Python3位于其他位置,请根据您的设置修改第一行。关闭您的终端并重新打开它以使其生效。第一次打开终端时,您应该会看到virtualenvwrapper的一些输出。这只会发生一次,因为某些目录是作为设置的一部分创建的。现在您应该能够输入mkvirtualenv--version命令来验证是否安装了virtualenvwrapper。创建一个新的虚拟环境假设您正在从事一个名为flashylights的项目。要使用此名称创建虚拟环境,请运行以下命令:mkvirtualenvflashylights环境已创建并激活,因此您会看到(flashlylights)出现在提示符之前:Flashylights提示符现在环境已激活,情况发生了变化。python现在指向一个与您之前在系统中识别的实例完全不同的Python实例。它为您的环境创建一个目录,并在其中放置Python3二进制文件、pip命令等的副本。键入whichpython和whichpip以查看它们的位置。Flashylights命令如果你现在运行一个Python程序,你可以使用python而不是python3来运行它,你可以使用pip而不是pip3。您使用pip安装的任何包都只会安装在该环境中,它们不会干扰您的其他项目、其他环境或系统安装。要停用环境,请运行deactivate命令。要重新启用它,请运行workonflashylights。您可以使用workon或lsvirtualenv列出所有可用环境。您可以使用rmvirtualenvflashylights删除环境。将虚拟环境添加到您的开发管道是明智之举。根据我的经验,它会阻止我在系统范围内安装我正在试验的库,这可能会导致问题。我发现virtualenvwrapper是让我进入流程并轻松管理我的项目环境的最简单方法,无需考虑太多和记住太多命令。高级功能您可以在系统上安装多个Python版本(例如,在Ubuntu上使用deadsnakesPPA)并使用该版本创建虚拟环境,例如mkvirtualenv-p/usr/bin/python3.9myproject。它可以在进入和离开目录时自动激活和停用。您可以在每次创建新环境时使用postmkvirtualenv挂钩来安装常用工具。有关更多提示,请参阅文档。
