【问题标题】:How to make a package executable from the command line?如何从命令行使包可执行?
【发布时间】:2017-06-21 08:42:24
【问题描述】:

我想从命令行创建一个可执行的 python 包。

我知道您可以使用chmod +x myfile.py 执行myfile.py#!/usr/bin/env 开头的操作,以使用./myfile.py 使单个文件可执行。我也知道你可以使用python -m mypackage 来运行包含__main__.py 的包。

但是,如果我将 shebang 行添加到包的 __main__.py,运行 chmod +x mypackage,然后尝试 ./mypackage,则会收到错误 -bash: ./mypackage: Is a directory

这样的包可以运行吗?

(需要明确的是,我不是在寻找像 py2exe 这样的东西来使其成为独立的可执行文件。我仍然希望它能够被解释,我只是想让启动更简单)

【问题讨论】:

标签: python linux chmod


【解决方案1】:

这包含您要查找的内容。引导您完成如何设置您的包,以便可以使用命令行应用程序/界面。

建议使用 argparse 而不是 sys.argv。该帖子的 cmets 也有助于获得更多更新的提示。

https://gehrcke.de/2014/02/distributing-a-python-command-line-application/

【讨论】:

    【解决方案2】:

    简短的回答是

    当您创建chmod +x mypackage 时,您什么也不做,因为mypackage 是一个目录,并且目录已经有 execute 标志(否则您将无法列出它们的文件)。如果你输入:ls -l 你会看到。

    您可以选择直接运行整个软件包而不安装它,这就是您已经提到的方式:python -m mypackage,或者制作一个可以为您执行此操作的 shell 脚本。

    我看到您的意图是仅执行 ./something 并且您的应用程序开始工作而无需在前面指定 python 并且这也不是全局安装的。最简单的方法是放置一个 shell 脚本来启动你的包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 2012-07-15
      相关资源
      最近更新 更多