Как запустить скрипт Python из другого скрипта Python кроссплатформенным способом? - PullRequest
1 голос
/ 31 августа 2011

Вот в чем проблема ...

Я пишу очень маленький плагин для Blender, у меня есть 10 сценариев Python, они анализируют файлы разных форматов с помощью командной строки, и у меня есть сценарий Main Pythonчтобы запустить все остальные сценарии с правильными командами ...

, например, "Main.py" включает в себя:

txt2cfg.py -inFile -outFile ...
ma2lxo.py -inFile -outFile ...

В Blender уже включен Python, поэтому я могу запускать "Main.py" из Blender, но он мне нужен для работы как с ПК, так и с MAC, а также не требует установки Python,поэтому я не могу использовать:

  • execfile ('txt2cfg.py -inFile -outFile')
  • os.system ('ma2lxo.py -inFile -outFile')
  • или даже импорт подпроцесса

, потому что им требовалась установка Python для запуска * .py файлов.

Извините за язык

Спасибо

Ответы [ 3 ]

3 голосов
/ 01 сентября 2011

Если вам действительно нужно выполнить скрипт python в новом процессе, и вы не знаете, где находится нужный вам интерпретатор, используйте модуль sys, чтобы выручить.

import sys
import subprocess

subprocess.Popen((sys.executable, "script.py"))

Хотя лучше импортировать модуль (динамически, если это необходимо), а затем запустить его основной метод в другом скрипте.

3 голосов
/ 01 сентября 2011

например, «Main.py» включает в себя:

txt2cfg.py -inFile -outFile ... ma2lxo.py -inFile -outFile ...

Две вещи.

  1. Каждый другой скрипт нуждается в функции main () и "переключателе основного импорта".См. http://docs.python.org/tutorial/modules.html#executing-modules-as-scripts о том, как это должно выглядеть.

  2. Импорт и выполнение других сценариев.

    import txt2cfg
    import ma2lxo
    txt2cfg.main( inFile, outFile )
    ma2lxo.main( inFile, outFile )
    

Этоэто самый простой способ делать вещи.

1 голос
/ 31 августа 2011

Два варианта:

  1. Используйте py2exe для связывания интерпретатора со сценариями.
  2. Импортируйте модули и вызывайте функции автоматически.
...