Мне нужна небольшая помощь в создании исполняемой команды ОС Python для Blender (Windows и Mac). Я настраиваю автономный пакет блендера для использования клиентом. У меня есть скрипт Python, который импортирует некоторые данные, и я хочу создать исполняемый скрипт Python, который запускает команды ОС для запуска Blender, запуска скрипта Python и определения каталогов данных.
Это общая версия команды Windows, которую я обычно запускаю для импорта данных, используя автономную версию Blender:
"C:\Users\username\Desktop\Package\system\blender\blender.exe" "C:\Users\username\Desktop\Package\system\version_data\CurrentVersion.blend" -P "C:\Users\username\Desktop\Package\system\version_data\BlenderScript.py" "C:\Users\username\Desktop\Package\input_data\\" -y
Из моих исследований я понял, что мне нужно:
- импорт ОС
- сделать каталоги в команде относительными
- создать исполняемый файл python
Мой опыт работы с Python ограничен, но я думаю, что это может быть что-то вроде этого:
import os
pythonDirectory = os.path.dirname(os.path.abspath(RunThisApp.exe)) # get the current dir of this file (which would be: C:\Users\username\Desktop\Package\)
os.path.join(pathDirectory, "//system\blender\blender.exe" "//system\version_data\CurrentVersion.blend" -P "//system\version_data\BlenderScript.py" "//input_data\\" -y)
Однако я просмотрел этот пост и немного не понял, как лучше всего это сделать:
Вызов внешней команды в Python
Тогда я мог бы использовать PyInstaller для создания исполняемых файлов Python. Кажется, это самый простой метод, предложенный здесь:
Как создать скрипт Python автономный исполняемый файл для запуска без ЛЮБОЙ зависимости?
Я близок к правильному результату здесь? Я предполагаю, что мой синтаксис отключен. Мне нужно убедиться, что он работает как для Windows, так и для Mac.
Следует также отметить, что отдельный скрипт Python, который я запускаю для импорта данных в блендер (который я использую и обновляю в течение нескольких лет), обращается к аргументам ОС, чтобы получить желаемый путь данных для импорта, поэтому мне нужно убедитесь, что я поддерживаю эту связь. Вот пример:
IMPORT_DATA_FILENAME = sys.argv[4]+'data.txt'
Любые советы или вход будет принята с благодарностью. Крис Ли
"//system\blender\blender.exe"
: плохой выбор:\b
— это возврат. Используйте префикс r.... какой у вас вопрос??? - person Jean-François Fabre   schedule 18.05.2017\b
интерпретироваться как управляющая последовательность, представляющая возврат, например,\n
является новой строкой. Вы добавляете префиксr
к строке, как вr"//system\blender\blender.exe"
, чтобы указать, что это необработанная строка, чтобы предотвратить интерпретацию обратной косой черты таким образом. Подробнее читайте здесь. Вы также можете использоватьos.path.join
, чтобы не использовать разделители пути в строке. - person sambler   schedule 23.05.2017