【问题标题】:How to run a Python script from another Python script in the cross-platform way?如何以跨平台的方式从另一个 Python 脚本运行 Python 脚本?
【发布时间】:2011-11-07 22:08:08
【问题描述】:

问题来了……

我正在为 Blender 编写非常小的插件, 我有 10 个 python 脚本,它们使用命令行解析不同的文件格式,并且我有一个 Main Python 脚本来使用正确的命令运行所有其他脚本...

例如,“Main.py”包括:

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

Blender 已经包含 Python,所以我可以从 Blender 运行“Main.py”,但我需要它同时在 PC 和 MAC 上工作,并且不需要安装 Python,所以我不能使用:

  • execfile('txt2cfg.py -inFile -outFile')
  • os.system('ma2lxo.py -inFile -outFile')
  • 甚至导入子流程

因为他们需要安装 Python 才能运行 *.py 文件。

语言不通

谢谢

【问题讨论】:

  • "并且也不需要安装 Python"。馊主意。只需安装 Python。生活要简单得多。
  • 如果你不能推动任何人安装平台,你怎么能推动任何人运行你的应用程序?
  • 尽可能友好意味着简单,对吧?这意味着 Python 是必需的,您的主脚本只需执行 import 即可合并其他 10 个进程。这很简单。

标签: python blender


【解决方案1】:

例如,“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 )
    

这是最简单的做事方式。

【讨论】:

    【解决方案2】:

    如果你真的需要在一个新进程中执行一个 python 脚本并且你不知道你想要的解释器在哪里,那么可以使用 sys 模块来帮助你。

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

    虽然导入模块(如果需要,动态导入)然后在另一个脚本中运行它的 main 方法可能是一个更好的主意。

    【讨论】:

      【解决方案3】:

      两种选择:

      1. 使用 py2exe 将解释器与脚本捆绑在一起。
      2. 导入模块并自动调用函数。

      【讨论】:

      • 哈哈对不起!但是你可以使用 py2exe 和 py2app!
      • 是的!没问题!虽然我用的不多,但 py2app 可能需要你有一个 mac,然后在上面编译。仅供参考
      猜你喜欢
      • 1970-01-01
      • 2020-09-14
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多