是否有一种简单的方法可以使脚本完全模仿python可执行文件的功能,以便在PyInstaller部署中使用?

时间:2016-11-28 19:37:49

标签: python shell

我想创建一个Python脚本 - 让它调用它exe.py - 它基本上与Python可执行文件(python.exe,/usr/bin/python等)的行为完全相同。那就是:

  • python exe.py运行shell
  • python exe.py script.py运行Python脚本
  • python exe.py script.py a b c使用args
  • 运行Python脚本
  • python exe.py -c ...运行命令
  • python exe.py -m ...运行模块
  • python exe.py -h打印帮助屏幕
  • 等...

我当然可以重新实现所有这些,但我想知道是否有一种编程方式来简单地通过命令行和所有参数并使其行为与python.exe完全相同?与在不重新实现整个交互式shell的情况下运行交互式shell的方式相同。

XY问题:我实际上在做的是创建一个独立的可执行文件,其中包含某些难以安装的库。我想提供一种方法来运行捆绑到独立可执行文件中的Python版本。 PyInstaller将Python脚本作为入口点,并将它们转换为它所构建的任何目标平台的可执行文件,因此我想制作一个Python脚本,其行为与python可执行文件完全相同,因此可以将其转换为支架 - 独立并在打包的可执行文件的环境中运行。

因此,我不能只调用Python可执行文件,因为它不会是打包版本的可执行文件。

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用os.system或更现代的subprocess来运行您的实际脚本。使用例如找到的答案hereexe.py的最简单示例:

import subprocess
import sys

python_script = sys.argv.pop(0)
call          = [sys.excecutable] + python_script + sys.argv
result        = subprocess.check_call(call)

这种方式exe.py包装了你的python可执行文件。使用argparse可以轻松读取标记/参数,或编写自己的解析器。

修改

感谢@Laurent LAPORTE提供建议。