How to run a Python script from another Python script in the cross-platform way?

浪子不回头ぞ 提交于 2019-12-11 13:47:10

问题


Here is the problem...

I'm writing very small plugin for Blender, I have 10 python scripts, they parsing different file formats by using command-line, and I have a Main Python script to run all other scripts with proper commands...

for example, "Main.py" include:

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

Blender already include Python, so I can run "Main.py" from Blender, But I need it to work with both PC and MAC, and also doesn't require Python installation, so I can't use:

  • execfile(' txt2cfg.py -inFile -outFile ')
  • os.system(' ma2lxo.py -inFile -outFile ')
  • or even import subprocess

because they required Python installation in order to run *.py files.

Sorry for language

Thanks


回答1:


for example, "Main.py" include:

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

Two things.

  1. Each other script needs a main() function and a "main-import switch". See http://docs.python.org/tutorial/modules.html#executing-modules-as-scripts for hints on how this must look.

  2. Import and execute the other scripts.

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

This is the simplest way to do things.




回答2:


If you really need to execute a python script in a new process and you don't know where the interpreter you want is located then use the sys module to help out.

import sys
import subprocess

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

Though importing the module (dynamically if need be) and then running its main method in another script is probably a better idea.




回答3:


Two options:

  1. Use py2exe to bundle the interpreter with the scripts.
  2. Import the modules and call the functions automatically.


来源:https://stackoverflow.com/questions/7262604/how-to-run-a-python-script-from-another-python-script-in-the-cross-platform-way

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!