2017-02-03 118 views
1

我想从命令行制作一个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使它成为一个独立的可执行文件。我仍然期待它来解释,我只是想推出更简单)

+0

您必须运行*文件*,而不是目录。运行./mypackage/__main__.py会发生什么? Python可能知道如何找到主程序,但Linux shell不知道。 – Prune

+2

*是否可以像这样运行包?* <=否。但为什么不删除一个shell脚本? – dhke

+2

您可能想查看[setuptools'console_scripts'入口点](http://python-packaging.readthedocs.io/en/latest/command-line-scripts.html#the-console-scripts-entry-point )。 *(假设你的软件包是一个正确的'setuptools'发行版,包含'setup.py'等等。)* –

回答

0

简短的回答是

当您chmod +x mypackage你什么都不做,因为mypackage是一个目录,目录中已经有了执行标志(或者你将无法列出他们的文件)。如果你输入:ls -l你会看到。

您可以选择直接运行整个软件包而无需安装它,这是您已经提到的方式:python -m mypackage,或者创建一个shell脚本,它可以为您做到这一点。

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

相关问题