我如何附加到 Maya PYTHONPATH?

How do i append to the Maya PYTHONPATH?

我正在学习 Practical Maya Programming,并尝试在我的 PC 上设置 'development root',我完全按照说明(如下)进行操作,但它不起作用 - 在我输入 'mayapy.exe' 我收到警告“'mayapy.exe' 未被识别为内部或外部命令、可运行程序或批处理文件。”

摘自本书:

让我们决定在哪里进行编码。我们将此位置称为本书其余部分的开发根。简而言之,我将选择 C:\mayapybook\pylib 来存放我们所有的 Python 代码。

创建开发根文件夹,并在其中创建一个名为minspect.py.

的空文件

现在,我们需要将 C:\mayapybook\pylib 放到 Python 的 sys.path 上,以便可以导入它。最简单的方法是使用 PYTHONPATH 环境变量。从 Windows 命令行,您可以 运行 添加路径,并确保它有效:

> set PYTHONPATH=%PYTHONPATH%;C:\mayapybook\pylib
> mayapy.exe
>>> import sys
>>> 'C:\mayapybook\pylib' in sys.path
True
>>> import minspect
>>> minspect
<module 'minspect' from '...\minspect.py'>

编辑

这就是我目前的工作方式:

PS C:\Users\Me> set PYTHONPATH=%PYTHONPATH%;C:\mayapybook\pylib
C:\mayapybook\pylib : The term 'C:\mayapybook\pylib' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and
try again.
At line:1 char:29
+ set PYTHONPATH=%PYTHONPATH%;C:\mayapybook\pylib
+                             ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\mayapybook\pylib:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

所以书中的代码不起作用,但 DrHaze post 中的代码似乎:

PS C:\Users\Me> setx PATH "%PATH%C:\mayapybook\pylib\"

SUCCESS: Specified value was saved.

但是当我 运行 Maya Python 解释器并检查 C:\mayapybook\pylib\ 是否在系统路径中时 returns false:

>>> 'C:\mayapybook\pylib' in sys.path
False

这个错误"'mayapy.exe' is not recognized as an internal or external command, operable program or batch file."的意思是mayapy.exe所在的路径没有包含在PATH环境变量中。您的系统尝试查看 PATH 变量中包含的所有文件夹,但找不到名为 mayapy.exe.

的可执行文件

可执行文件 mayapy.exe 通常位于此处:

C:\Program Files\Autodesk\Maya(VERSION)\bin\mayapy.exe 在我的电脑上它位于此处:C:\Program Files\Autodesk\Maya2014\bin\mayapy.exe

要将 mayapy.exe 位置添加到您的路径,请使用以下命令之一:

  • setx PATH "%PATH%;C:\Program Files\Autodesk\Maya2014\bin\" 如果你 想永久更改它
  • set PATH "%PATH%;C:\Program Files\Autodesk\Maya2014\bin\" 仅适用于 cmd session.
  • 的当前实例

编辑

您在编辑中显示的错误是问题的根源。 Windows 未能设置环境变量 PYTHONPATH。因此,当您执行 'C:\mayapybook\pylib' in sys.path 时,它会 returns Falsesys.path 实际上包含 PYTHONPATH 的值。这就是为什么 returns False.

现在,为什么设置这个环境变量失败了?

首先我看到你在使用Windows Powershell,记住这一点。

我给你的命令是:

set PATH "%PATH%;C:\Program Files\Autodesk\Maya2014\bin\"

您写道:

set PYTHONPATH=%PYTHONPATH%;C:\mayapybook\pylib

应该是什么:

set PYTHONPATH "%PYTHONPATH%;C:\mayapybook\pylib\"

语法有点不同,最后一条命令应该可以。

作为解释,您的书为您提供了一些命令,可在 vintage/old-style windows 终端中键入:cmd.exe 当您使用 Windows Powershell 时,某些命令可能具有不同的语法。 现在你可以做的是:

  • 使用cmd.exe(右击标题栏->属性自定义)
  • 使用 Powershell 但请记住,语法可能与您书中的语法略有不同

如果您使用的是 Powershell,可以使用不同的命令和策略来管理环境变量。

  1. 您可以使用 SetEnvironmentVariable
  2. 永久设置变量
  3. 您可以为当前 shell 会话设置:$env:VARNAME = VARVALUE
  4. 您可以将设置变量的命令放在 powershell 配置文件中 文件。

我会选择第三个选项。这三者的详细信息如下:

选项 1. 将目录 "C:\mayapybook\pylib\" 添加到现有目录 PYTHONPATH 永久用于您的帐户:

[Environment]::SetEnvironmentVariable("PYTHONPATH", $env:PYTHONPATH +";C:\mayapybook\pylib\", "User")

选项 2。将 Maya bin 文件夹附加到您的 PATH 中,仅用于当前 shell 会话:

$env:PATH += ";C:\Program Files\Autodesk\Maya2016\bin\"

选项 3. 创建电源shell 配置文件并在那里设置环境变量。

首先,您需要确保 powershell 脚本可以在本地 运行: 点击 windows 按钮,开始输入 powershell,右键单击并以管理员身份打开。进入: 获取执行策略

如果显示为 Restricted 或 AllSigned,请将其设置为 RemoteSigned,如下所示:

Set-ExecutionPolicy RemoteSigned

关闭那个 shell。现在在另一个 powershell(不是管理员)中输入:

cd ~\Documents
md WindowsPowerShell
cd WindowsPowerShell
New-Item -path "profile.ps1" -type file
notepad.exe profile.ps1

每当打开新的电源shell时,将您想要运行的任何命令粘贴到文件中:

Write-Host "Hello From Your Profile"
$env:PATH += ";C:\Program Files\Autodesk\Maya2016\bin\"
$env:PYTHONPATH += ";C:\mayapybook\pylib\"

现在,无论何时打开电源shell,您都会收到一条愚蠢的消息,并且会设置这些路径。您可以输入以下内容进行测试:

Write-Host $env:PATH

或列出所有环境变量:

Get-ChildItem Env:

您现在应该可以从 maya bin 目录中 运行 命令。例如,键入:maya 以启动 maya。

一些其他有用的功能shell env var 命令here