【问题标题】:How to run a Python CLI project as an exe如何将 Python CLI 项目作为 exe 运行
【发布时间】:2020-08-19 13:03:07
【问题描述】:

我的项目结构如下:

project
|--invoices
 |--abc_company
 |--xyc_company
|--scripts
 |-- __init__.py
 |-- extract_xyz_data.py
 |-- extract_abc_data.py
 |-- extract_data.py
 |-- utilities.py
 |-- abc_validation.py
 |-- xyz_validation.py
|--main.py 

运行所有内容的主脚本是 main.py,它在终端上运行并通过 arg 解析器获取少量参数。

发票文件夹包含数据。每次运行脚本时都会更改此数据。因此,此文件夹中的数据不会保持静态或相同。每个月思考不同的 pdf。

我想把整个项目和代码库转移给一个技术含量很低的人,这样他们就不必经常处理 python。

他们确实需要在终端中传递一些参数,但是一旦他们这样做并更改了数据文件夹的内容,它应该会自动运行。

要求他们跑

python main.py arg1  arg2 arg3

快速时间是最好的方法,或者可以将整个项目打包为只要求他们传递一些参数的 exec?

当前无法使用 docker。

【问题讨论】:

    标签: python


    【解决方案1】:

    https://docs.python.org/3/faq/windows.html

    如何使 Python 脚本可执行?在 Windows 上,标准 Python 安装程序已经将 .py 扩展名与文件类型相关联 (Python.File) 并为该文件类型提供一个打开命令,该命令运行 解释器(D:\Program Files\Python\python.exe "%1" %*)。这是 足以使脚本在命令提示符下作为“foo.py”执行。 如果您希望能够通过简单地键入“foo”来执行脚本 无需扩展,您需要将 .py 添加到 PATHEXT 环境 变量。

    键入 python main.py args 与调用 main.py(省略 python 一词)之间的工作量没有太大区别。如果您遵循上述规定,则可以省略添加 .py ...的要求...

    如果你真的想制作一个可执行文件,你可以这样做:

    https://docs.python.org/3/faq/windows.html

    如何从 Python 脚本生成可执行文件?参见 cx_Freeze distutils 扩展,允许您创建控制台和 GUI 来自 Python 代码的可执行文件。 py2exe,最流行的扩展 构建基于 Python 2.x 的可执行文件,尚不支持 Python 3 但有一个版本正在开发中。

    对于 3.x,您可以使用 pyinstaller

    https://www.pyinstaller.org

    https://pyinstaller.readthedocs.io/en/stable/operating-mode.html

    PyInstaller 会读取您编写的 Python 脚本。它分析你的 用于发现脚本所需的所有其他模块和库的代码 命令执行。然后它收集所有这些文件的副本—— 包括活跃的 Python 解释器! – 并将它们与您的 脚本在单个文件夹中,或者可选地在单个可执行文件中。

    【讨论】:

    • 我的意思是 wud pyinstaller 提供了一个选项,不需要手动安装项目中使用的所有 python 库,它们也可以将参数传递给 exec?
    • @Baktaawar 更新了我的答案:)。根据他们的网页,确实如此。是的,您可以传递参数。见stackoverflow.com/questions/25984395/…
    • pyinstaller 如何帮助我自动安装所有 python 包?就像一个新用户需要运行我的 cli 一样,他们需要先安装 hv python 3、pandas、nuympy,然后才能运行它。粗略的方法是给他们 requirements.txt 文件并要求他们运行以安装所有这些东西。我想知道是否不是要求他们在他们的系统上安装所有这些,我们是否可以给他们一个 exec,它也允许他们传递参数和新数据。 pyinstaller 能做到所有这些吗>
    • @Baktaawar 是的。它将解释器和所有必需的包打包在一起。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2018-02-09
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    相关资源
    最近更新 更多