MacOS 系统中如何设置 Python 虚拟环境

  • 日期:07-24
  • 点击:(1273)


9746b653539e4f259ad34b2b9ae156be

使用pyenv和virtualwrapper来管理您的虚拟环境可以避免很多混乱。

- Matthew Broberg(作者)

作为Python开发人员和MacOS用户,获得新机器所需的第一件事就是设置Python开发环境。以下是最佳实践(尽管我们已经编写了其他方法来管理MacOS上的Python)。

首先,打开终端并在其冷静默窗口中键入xcode-select --install命令。单击“确认”后,将配置基本开发环境。 MacOS上需要此步骤来设置本地开发实用程序库,其中包括“许多常用工具,实用程序和编译器,例如make,GCC,clang,perl,svn,git,size,strip,根据OS X Daily “。 Linux系统上默认安装的字符串,字符串,libtool,cpp,what和许多有用的命令。

接下来,安装Homebrew并执行以下Ruby脚本。

Ruby -e'$(curl -fsSL)'

如果您像我一样,如果您对来自Internet的脚本有疑问,可以单击上面的脚本仔细查看特定功能。

一旦安装完成,恭喜你,你有一个很好的包管理工具。当然,您可以接下来运行brew install python或其他命令。不要这样,哈哈! Homebrew为我们提供了托管版本的Python,但让这个工具管理我们的Python环境很快就会失控。我们需要pyenv,一个简单的Python版本管理工具,可以在许多操作系统上安装和运行。运行以下命令:

$ brew install pyenv

如果您希望每次打开命令提示符时都运行pyenv,则需要将以下内容添加到配置文件中(默认位于MacOS中的.bash_profile,位于主目录中):

$ cd~/

$ echo'eval'$(pyenv init - )''>>bash_profile中

添加此内容后,每个终端都将启动pyenv来管理其PATH环境变量并插入您要运行的Python版本(而不是在环境变量中设置的初始版本。有关详细信息,请阅读“如何提供Linux系统设置PATH变量“)。为修改后的.bash_profile文件打开一个新终端以使其生效。

在安装您喜欢的Python版本之前,您需要安装一些有用的工具,如下所示:

$ brew install zlib sqlite

Pyenv依赖于zlib压缩算法和SQLite数据库,如果配置不当,通常会导致构建问题。将这些导出配置命令添加到当前终端窗口以确保它们已安装。

$ export LDFLAGS=' - L/usr/local/opt/zlib/lib -L/usr/local/opt/sqlite/lib'

$ export CPPFLAGS=' - I/usr/local/opt/zlib/include -I/usr/local/opt/sqlite/include'

现在准备工作已经完成,现在是时候为现代人安装一个版本的Python了:

$ pyenv install 3.7.3

去喝杯咖啡,摘一些豆子,亲自烘烤,品尝。说这意味着上面的安装过程需要一段时间。

完成后,您可以愉快地使用虚拟环境。如果您没有接下来的步骤,则只能在所有工作项目中共享相同的Python开发环境。使用虚拟环境隔离每个项目的依赖关系比Python本身提供的开箱即用功能更清晰,可重用。出于这些原因,将virtualenvwrapper安装到Python环境中:

$ pyenv global 3.7.3

#确保在此命令中保留$()语法,以便它可以评估

$ $(pyen3哪个python3)-m pip install virtualenvwrapper

再次打开.bash_profile文件并添加以下内容,使其在每次打开新终端时都有效:

#我们希望定期访问我们的虚拟环境目录

$ echo'export WORKON_HOME=/.virtualenvs'>>bash_profile中

#如果在给定的虚拟环境中,请创建一个虚拟环境目录

#如果还不存在

$ 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 -l

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/premkproject

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/postmkproject

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/initialize

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/premkvirtualenv

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/postmkvirtualenv

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/prermvirtualenv

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/postrmvirtualenv

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/predeactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/postdeactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/preactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/postactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/get_env_details

从现在开始,您的所有工作都在虚拟环境中,允许您使用临时环境进行安全开发。使用此工具链,您可以根据工作需要设置多个项目并在它们之间切换:

$ mkvirtualenv test1

使用基本前缀'/Users/moshe/.pyenv/versions/3.7.3'

/susers/moshe/.virtualenvs/test1/bin/python3中的新python可执行文件

还在/Users/moshe/.virtualenvs/test1/bin/python中创建可执行文件

安装setuptools,pip,wheel .

完成。

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/predeactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/postdeactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/preactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/postactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test1/bin/get_env_details

(test1)$ mkvirtualenv test2

使用基本前缀'/Users/moshe/.pyenv/versions/3.7.3'

/susers/moshe/.virtualenvs/test2/bin/python3中的新python可执行文件

还在/Users/moshe/.virtualenvs/test2/bin/python中创建可执行文件

安装setuptools,pip,wheel .

完成。

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/predeactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/postdeactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/preactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/postactivate

Virtualenvwrapper.user_scripts创建/Users/moshe/.virtualenvs/test2/bin/get_env_details

(test2)$ ls $ WORKON_HOME

Get_env_details postmkvirtualenv premkvirtualenv

初始化postrmvirtualenv prermvirtualenv

后激活preactivate test1

后取消激活预先激活test2

Postmkproject premkproject

(test2)$ workon test1

(TEST1)$

在这里,您可以使用deactivate命令退出当前环境。

您可能已将长期项目添加到/src这样的目录中。如果要启动新项目,请转到此目录,为此项目添加子文件夹,然后使用功能强大的Bash解释程序根据您的目录名称自动命令虚拟环境。例如,名为“pyfun”的项目:

$ mkdir -p~/src/pyfun&& cd~/src/pyfun

$ mkvirtualenv $(basename $(pwd))

#我们将看到环境初始化

(pyfun)$ workon

Pyfun

TEST1

TEST2

(pyfun)$ deactivate

$

当您需要处理此项目时,只需输入目录并通过输入以下命令重新连接到虚拟环境:

$ cd~/src/pyfun

(pyfun)$ workon。

初始化虚拟环境意味着将时间点复制到Python版本和加载的模块。由于依赖关系可能会发生很大变化,因此有时您需要刷新项目的虚拟环境。在这种情况下,您可以通过删除虚拟环境安全地执行此操作。源代码不受影响,如下所示:

$ cd~/src/pyfun

$ rmvirtualenv $(basename $(pwd))

$ mkvirtualenv $(basename $(pwd))

这种使用pyenv和virtualwrapper管理虚拟环境的方法避免了开发环境与运行时环境的Python版本之间不一致的不一致。这是避免混淆的最简单方法 - 特别是如果您工作的团队非常庞大。

如果您是初学者并准备配置Python环境,您可以阅读有关在MacOS中使用Python 3的文章。您是否对Python有疑问,无论是初学者还是中级用户?给我们留言,我们将在下一篇文章中考虑它。

通过:

作者:Matthew Broberg主题:lujun9972译者:runningwater校对:wxy

本文由LCTT编写,由Linux China推出