如何从命令行使包可执行?
How to make a package executable from the command line?
我想从命令行创建一个 python 包可执行文件。
我知道您可以执行 chmod +x myfile.py
,其中 myfile.py
以 #!/usr/bin/env
开头,使用 ./myfile.py
使单个文件可执行。我也知道您可以 python -m mypackage
到 运行 包含 __main__.py
的包裹。
但是,如果我将 shebang 行添加到包 运行 chmod +x mypackage
的 __main__.py
并尝试 ./mypackage
,我会得到错误 -bash: ./mypackage: Is a directory
.
是否可以运行这样的包裹?
(明确地说,我 不是 寻找类似 py2exe 的东西来使它成为一个独立的可执行文件。我仍然期待它被解释,我只是想让发布更简单)
简短的回答是否。
当你创建 chmod +x mypackage
时你什么都不做,因为 mypackage
是一个目录并且目录已经有 execute 标志(否则你将无法列出他们的文件)。如果你输入:ls -l
你会看到。
您可以选择直接 运行 整个软件包而不安装它,这是您已经提到的方式:python -m mypackage
,或者制作一个 shell 脚本来为您完成。
我看到你的意图是只执行 ./something
并且你的应用程序开始工作而不在前面指定 python
而且这不是全局安装的。最简单的方法是放置一个 shell 脚本来启动您的包。
这包含您要查找的内容。引导您完成如何设置您的包,以便命令行 application/interface 成为可能。
建议使用 argparse 而不是 sys.argv。 post 的评论也有助于获得更多更新提示。
https://gehrcke.de/2014/02/distributing-a-python-command-line-application/
我想从命令行创建一个 python 包可执行文件。
我知道您可以执行 chmod +x myfile.py
,其中 myfile.py
以 #!/usr/bin/env
开头,使用 ./myfile.py
使单个文件可执行。我也知道您可以 python -m mypackage
到 运行 包含 __main__.py
的包裹。
但是,如果我将 shebang 行添加到包 运行 chmod +x mypackage
的 __main__.py
并尝试 ./mypackage
,我会得到错误 -bash: ./mypackage: Is a directory
.
是否可以运行这样的包裹?
(明确地说,我 不是 寻找类似 py2exe 的东西来使它成为一个独立的可执行文件。我仍然期待它被解释,我只是想让发布更简单)
简短的回答是否。
当你创建 chmod +x mypackage
时你什么都不做,因为 mypackage
是一个目录并且目录已经有 execute 标志(否则你将无法列出他们的文件)。如果你输入:ls -l
你会看到。
您可以选择直接 运行 整个软件包而不安装它,这是您已经提到的方式:python -m mypackage
,或者制作一个 shell 脚本来为您完成。
我看到你的意图是只执行 ./something
并且你的应用程序开始工作而不在前面指定 python
而且这不是全局安装的。最简单的方法是放置一个 shell 脚本来启动您的包。
这包含您要查找的内容。引导您完成如何设置您的包,以便命令行 application/interface 成为可能。
建议使用 argparse 而不是 sys.argv。 post 的评论也有助于获得更多更新提示。
https://gehrcke.de/2014/02/distributing-a-python-command-line-application/