使用pyenv和virtualwrapper来管理你的虚拟环境可以避免很多混乱。作为Python开发者和MacOS用户,拿到新机器的第一件事就是搭建Python开发环境。以下是最佳实践(尽管我们已经写过关于在MacOS上管理Python的其他方法)。首先,打开终端并在其冰冷、静默的窗口中输入xcode-select--install命令。点击确定后,基本的开发环境就配置好了。在MacOS上需要此步骤来设置本机开发实用程序库,根据OSXDaily的说法,它包括“许多常用的工具、实用程序和编译器,例如make、GCC、clang、perl、svn、git、size、strip、strings、libtool、cpp、what以及许多在Linux中默认安装的有用命令”。接下来,安装Homebrew并执行以下Ruby脚本。ruby-e"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install)"如果你和我一样对网上随机运行的脚本有疑虑,可以点击上面的脚本来仔细看看它的具体功能。安装后,恭喜你,你拥有了一个优秀的包管理工具。自然地,您可能会执行brewinstallpython或下一步。别这样,哈哈!Homebrew为我们提供了一个托管版本的Python,但是如果我们让这个工具来管理我们的Python环境,它很快就会失控。我们需要pyenv,一个简单的Python版本管理工具,可以在许多操作系统上安装和运行。运行以下命令:$brewinstallpyenv如果你希望每次打开命令提示框时都运行pyenv,你需要在你的配置文件中添加以下内容(MacOS默认是.bash_profile,位于home目录):$cd~/$echo'eval"$(pyenvinit-)"'>>.bash_profile添加这一行后,每个终端都会启动pyenv来管理它的PATH环境变量,并插入你要运行的Python版本(不是在环境变量中设置的初始版本。更多详细信息请阅读“如何为Linux系统设置PATH变量”)。新开一个终端让修改后的.bash_profile文件生效。在安装您喜欢的Python版本之前,您需要安装一些有用的工具,如下所示:$brewinstallzlibsqlitepyenv依赖于zlib压缩算法和SQLite数据库,如果配置不正确,通常会导致构建问题。将这些导出配置命令添加到当前终端窗口以确保它们已安装。$exportLDFLAGS="-L/usr/local/opt/zlib/lib-L/usr/local/opt/sqlite/lib"$exportCPPFLAGS="-I/usr/local/opt/zlib/include-I/usr/local/opt/sqlite/include”现在准备工作已经完成,是时候安装一个现代版本的Python了:$pyenvinstall3.7.3去喝杯咖啡,挑些豆子,自己烧烤,然后品尝。这意味着上面的安装过程需要一段时间。添加好虚拟环境后,就可以愉快的使用虚拟环境了。如果没有后续步骤,您只是在所有工作项目中共享同一个Python开发环境。使用虚拟环境来隔离每个项目的依赖管理比Python本身提供的开箱即用的方法更干净、更可重用。由于这些原因,将virtualenvwrapper安装到Python环境中:$pyenvglobal3.7.3#请务必保留此命令中的$()语法,以便它可以评估$$(pyenvwhichpython3)-mpipinstallvirtualenvwrappertoopenagain。bash_profile文件,添加以下内容以使其在每次打开新终端时都有效:#我们希望定期转到我们的虚拟环境目录$echo'exportWORKON_HOME=~/.virtualenvs'>>.bash_profile#如果在给定的虚拟环境中environment,创建一个虚拟环境目录#如果一个不存在$echo'mkdir-p$WORKON_HOME'>>.bash_profile#通过调用这个脚本激活新的虚拟环境#注意$USER将替代你当前的用户$echo'.~/.pyenv/versions/3.7.3/bin/virtualenvwrapper.sh'>>.bash_profile关闭终端并重新打开它(或运行exec/bin/bash-l刷新当前终端会话),你会看到virtualenvwrapper正在初始化环境配置:$exec/bin/bash-lvirtualenvwrapper.user_scriptscreating/Users/moshe/.virtualenvs/premkprojectvirtualenvwrapper.user_scriptscreating/Users/moshe/.virtualenvs/postmkprojectvirtualenvwrapper.user_scriptscreating/Users/moshe/.virtualenvs/initializevirtualenvwrapper.user_scriptscreating/Users/moshe/.virtualenvs/premkvirtualenvvirtualenvwrapper.user_scriptscreating/Users/moshe/.virtualenvs/postmkvirtualenvvirtualenvwrapper.user_scriptscreating/Users/moshe/.virtualenvs/prermvirtualenvvirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/postrmvirtualenvvirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/predeactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/postdeactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/prescriptivaterapt/Users/moshe/.virtualenvs/postactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/get_env_details从现在开始,您的所有工作都将在虚拟环境中进行,这使您可以使用临时环境进行安全开发使用此工具链,您可以根据需要设置任意数量的项目并在它们之间切换:$mkvirtualenvtest1Usingbaseprefix'/Users/moshe/.pyenv/versions/3.7.3'/Users/moshe/.virtualenvs中的新python可执行文件/test1/bin/python3还在/Users/moshe/.virtualenvs/test1/bin/python中创建可执行文件安装setuptools、pip、wheel...done.virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/predeactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/postdeactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/preactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/postactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/get_env_details(test1)$mkvirtualenvtest2Usingbaseprefix'/Users/moshe/.pyenv/versions/3.7.3'/Users/moshe/中的新python可执行文件。virtualenvs/test2/bin/python3还在/Users/moshe/.virtualenvs/test2/bin/pythonInstalling中创建可执行文件setuptools,pip,wheel...done.virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/predeactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/postdeactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/preactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/postactivatevirtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/get_env_details(test2)$ls$WORKON_HOMEget_env_detailspostmkvirtualenvprevinmitialenvpostrmvirtualenvprermvirtualenvpostactivatepreactivatetest1postdeactivatepredeactivatetest2postmkprojectpremkproject(test2)$workontest1(test1)$这里使用deactivate命令退出当前环境推荐做法你可能在~/src等目录下添加了长期项目。当开始一个新项目时,进入这个目录,为项目添加子文件夹,并使用强大的Bash解释器根据你的目录名自动排序虚拟环境。例如,名为“pyfun”的项目:$mkdir-p~/src/pyfun&&cd~/src/pyfun$mkvirtualenv$(basename$(pwd))#我们将看到环境初始化(pyfun)$workonpyfuntest1test2(pyfun)$deactivate$当你需要处理这个项目时,只需进入该目录并输入以下命令重新连接虚拟环境:$cd~/src/pyfun(pyfun)$workon.初始化虚拟环境意味着改变Python版本和加载模块的时间点的副本。有时项目的虚拟环境需要刷新,因为依赖项可能会发生显着变化。在这种情况下,您可以通过删除虚拟环境来安全地执行此操作,源代码不受影响,如下所示:$cd~/src/pyfun$rmvirtualenv$(basename$(pwd))$mkvirtualenv$(basename$(pwd))这种使用pyenv和virtualwrapper管理虚拟环境的方法可以避免开发环境和运行环境Python版本不一致带来的烦恼。这是避免混淆的最简单方法-特别是当您与大型团队合作时。如果您是初学者,准备配置Python环境,可以阅读《在MacOS中使用Python3》一文。您对Python有任何疑问,无论是对于初学者还是中级用户?请给我们留言,我们将在下一篇文章中加以考虑。
