Как добавить в Maya PYTHONPATH?

Я работаю над практическим программированием Maya и пытаюсь установить «корень разработки» на своем ПК, я точно следовал инструкциям (ниже), но это не работает. В тот момент, когда я набираю «mayapy.exe», я получаю предупреждение «mayapy.exe» не является внутренней или внешней командой, исполняемой программой или пакетным файлом».

Из книги:

Давайте решим, где мы будем делать наше кодирование. В оставшейся части книги мы будем называть это место корнем разработки. Чтобы быть кратким, я выберу C:\mayapybook\pylib для размещения всего нашего кода Python.

Создайте корневую папку разработки и внутри нее создайте пустой файл с именем minspect.py.

Теперь нам нужно добавить C:\mayapybook\pylib в sys.path Python, чтобы его можно было импортировать. Самый простой способ сделать это — использовать переменную среды 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 кажется:

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

SUCCESS: Specified value was saved.

Но когда я запускаю интерпретатор Maya Python Interpreter и проверяю, находится ли C:\mayapybook\pylib\ в системном пути, он возвращает false:

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

person shfury    schedule 27.10.2015    source источник


Ответы (2)


Если вы используете Powershell, существуют разные команды и стратегии для управления переменными среды.

  1. Вы можете установить переменную на постоянной основе с помощью SetEnvironmentVariable
  2. Вы можете установить текущий сеанс оболочки с помощью: $env:VARNAME = VARVALUE
  3. Вы можете поместить команды для установки переменных в файл профиля powershell.

Я бы остановился на третьем варианте. Все три подробно описаны ниже:

Вариант 1. Чтобы навсегда добавить каталог "C:\mayapybook\pylib\" к существующему PYTHONPATH для вашей учетной записи:

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

Вариант 2. Чтобы добавить папку bin Maya в PATH только для текущего сеанса оболочки:

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

Вариант 3. Создайте профиль powershell и установите там переменные env.

Сначала вам нужно убедиться, что скрипты powershell могут запускаться локально: нажмите кнопку Windows, начните вводить powershell, щелкните правой кнопкой мыши и откройте от имени администратора. Введите: Get-ExecutionPolicy

Если указано Restricted или AllSigned, установите для него значение RemoteSigned следующим образом:

Set-ExecutionPolicy RemoteSigned

Закройте эту оболочку. Теперь в другом powershell (не admin) введите:

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

Вставьте в файл любые команды, которые вы хотите запускать всякий раз, когда открывается новый powershell:

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

Теперь всякий раз, когда вы открываете powershell, вы получаете глупое сообщение, и эти пути будут установлены. Вы можете проверить, набрав:

Write-Host $env:PATH

или чтобы перечислить все env vars:

Get-ChildItem Env:

Теперь вы сможете запускать команды из каталога Maya bin. Например, введите: maya, чтобы запустить Maya.

Некоторые другие полезные команды powershell env var здесь.

person Julian Mann    schedule 29.10.2015

Эта ошибка "'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.

РЕДАКТИРОВАТЬ

Ошибка, которую вы показываете в своем редактировании, является источником проблемы. Windows не удалось установить переменную среды PYTHONPATH. Следовательно, когда вы выполняете 'C:\\mayapybook\\pylib' in sys.path, он возвращает False. sys.path на самом деле содержит значение PYTHONPATH. Вот почему он возвращает False.

Теперь, почему ему не удалось установить эту переменную среды?

Сначала я вижу, что вы используете Windows Powershell, имейте это в виду.

Я дал вам следующую команду:

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

Вы написали:

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

Каким он должен быть:

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

Синтаксис немного отличается, и эта последняя команда должна работать.

В качестве пояснения в вашей книге приведены некоторые команды для ввода в винтажном/старом стиле оконного терминала: cmd.exe Поскольку вы используете Windows Powershell, некоторые команды могут иметь другой синтаксис. Теперь, что вы можете сделать, это:

  • Используйте cmd.exe (щелкните правой кнопкой мыши строку заголовка -> Свойства, чтобы настроить его)
  • Используйте Powershell, но имейте в виду, что синтаксис может немного отличаться от используемого в вашей книге.
person DrHaze    schedule 27.10.2015
comment
Спасибо @DrHaze за это - хотя ваш ответ точно не решил мою проблему. Теперь я установил свой путь к C\mayapybook\pylib\, используя приведенный выше код setx в качестве шаблона (он вернул «УСПЕХ: указанное значение сохранено») , затем я выполнил mayapy.exe, и теперь в только что загруженном интерпретаторе python он по-прежнему возвращает false в «C:\\mayapybook\\pylib» в sys.path - person shfury; 28.10.2015
comment
Привет, я только что отредактировал свой ответ. Не стесняйтесь кричать еще раз, если у вас возникнут проблемы. - person DrHaze; 28.10.2015
comment
Спасибо! Звучит многообещающе.. Попробую позже - person shfury; 29.10.2015