Main Content

pyenv

更改 Python 解释器的默认环境

自 R2019b 起

说明

使用 pyenv 更改 Python® 解释器的默认版本或执行模式。这些更改在不同 MATLAB® 会话中持久保留。

当您使用 py 命名空间从 MATLAB 键入 Python 表达式时,MATLAB 会选择并加载一个 Python 解释器,例如 py.list。要更改解释器,请执行以下操作:

  • 如果在 InProcess ExecutionMode 中加载了 Python,则重新启动 MATLAB 并使用新版本信息运行 pyenv

  • 如果在 OutOfProcess 模式下加载 Python,则调用 terminate 并使用新版本信息运行 pyenv

MATLAB 在加载 Python 解释器时访问以下设置:

  • 使用 pyenv 函数配置的 Python 环境的用户设置。如果您指定的版本与 PYTHONHOME 指定的版本冲突,则在调用 pyenv 之前删除环境变量。由 pyenv 设置的值可跨 MATLAB 会话而保持不变。有关详细信息,请参阅 在 Windows 平台上设置 Python 版本在 Mac 和 Linux 平台上设置 Python 版本

  • PYTHONHOME 环境变量,指定如果 pyenv.Status 的值为 NotLoaded,在哪里可以找到标准 Python 库。要查看 MATLAB 中变量的值,请键入 getenv("PYTHONHOME")。有关详细信息,请参阅使用 PYTHONHOME 环境变量

  • 系统 PATH 环境变量。要查看 MATLAB 中的系统路径,请键入 getenv("PATH")

  • Windows® 注册表。

示例

pyenv 显示有关当前(默认)Python 环境的详细信息。

示例

pyenv(Name,Value) 指定用于设置 Python 环境的参数。例如,pyenv(Version="3.10") 将 Microsoft® Windows 平台上的默认 Python 版本更改为 3.10。

pe = pyenv(___) 还以 PythonEnvironment 对象形式返回环境详细信息。请将此语法与上述语法中的任何参量结合使用。

示例

全部折叠

pe = pyenv;
pe.Version
ans = 

    "3.10"

将执行模式设置为 OutOfProcess

pyenv(ExecutionMode="OutOfProcess")
ans = 

  PythonEnvironment with properties:

          Version: "3.10"
       Executable: "C:\Python310\pythonw.exe"
          Library: "C:\Python310\python310.dll"
             Home: "C:\Python310"
           Status: NotLoaded
    ExecutionMode: OutOfProcess

创建变量。

py.list({"Monday","Tuesday","Wednesday","Thursday","Friday"});

显示进程。MATLAB 显示特定于您的环境的信息。

pyenv
ans = 

  PythonEnvironment with properties:

          Version: "3.10"
       Executable: "C:\Python310\pythonw.exe"
          Library: "C:\Python310\python310.dll"
             Home: "C:\Python310"
           Status: Loaded
    ExecutionMode: OutOfProcess
        ProcessID: "9768"
      ProcessName: "MATLABPyHost"
pe = pyenv;
if pe.Status == "Loaded" && pe.Version ~= "3.10"
    disp('To change the Python version, restart MATLAB, then call pyenv(Version="3.10").')
else
    pyenv(Version="3.10");
end

要验证系统上是否安装了 Python,请检查 PythonEnvironment Version 属性。

pe = pyenv;
if pe.Version == ""
    disp "Python not installed"
end

输入参数

全部折叠

名称-值参数

将可选的参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但参量对组的顺序无关紧要。

在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name 引起来。

示例: pe = pyenv(Version="/usr/bin/python",ExecutionMode="OutOfProcess")

Python 版本号(仅限 Windows 平台)或可执行文件名,指定为字符串或字符向量。有关受支持版本的信息,请参阅配置您的系统使用 Python

  • 如果 Version 指定数字,则该值必须包含使用句点分隔的主要版本号和次要版本号。该函数在 Windows 注册表中查找版本。如果从 www.python.org/downloads 下载 Python 应用程序,则安装过程中会自动将该版本添加到注册表。如果您从不同来源下载应用程序,则必须将版本添加到注册表中,或使用可执行文件名调用 pyenv 来更改版本。

  • 如果 Version 是现有 Python 可执行文件的名称,则值必须包含该文件的名称以及该文件的完整或相对路径。此语法可用在任何平台上或用于重新打包的 CPython 实现下载。

示例: pyenv(Version="3.10")

示例: pyenv(Version="/usr/bin/python")

数据类型: char | string

执行模式,它指示是否在与 MATLAB 相同的进程中运行 Python 脚本;指定为 'InProcess''OutOfProcess'。默认的 'InProcess' 在 MATLAB 进程中运行脚本。此模式适用于性能关键的使用情形。

'OutOfProcess' 会另外启动一个单独的进程,用于安全执行 Python 脚本和库。在以下情况下,选择 'OutOfProcess'

  • 使用的 Python 库和 MATLAB 都需要使用第三方库,但要求的第三方库的版本不同。

  • 调试工作流。

当您在进程外调用 Python 函数时,会产生与该调用相关联的开销。此行为可能会影响性能。

数据类型: char | string

版本历史记录

在 R2019b 中推出