如何从命令行使包可执行?

eri*_*nla 6 python linux chmod

我想从命令行制作一个可执行的 python 包。

我知道您可以使用chmod +x myfile.pywheremyfile.py开始#!/usr/bin/env使单个文件可执行./myfile.py。我还知道您可以python -m mypackage运行包含__main__.py.

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

是否可以运行这样的包?

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

VSt*_*kov 1

简短的回答是否定的

当您执行此操作时chmod +x mypackage,您什么也不做,因为mypackage目录和目录已经具有执行标志(否则您将无法列出它们的文件)。如果你输入:ls -l你就会看到。

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

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