2017-02-03 162 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腳本。

相關問題