2014-11-13 41 views
0

是否可以在windows上使用pyinstaller來編譯Linux上使用的單一文件解決方案?在Windows上編譯python腳本for Linux使用

在PowerShell中,運行以下命令:

pyinstaller scriptname.py --onefile 

完美的作品,創建運行在Windows上沒有問題的一個.exe文件。我怎樣才能修改這個來產生一個二進制文件(或者在Linux上運行的任何東西,我不知道如何使用這個平臺,我只是想讓別人用這個操作系統來測試代碼)?

我知道PyInstaller過程的一部分是創建一個.spec文件,該文件可以被修改用於編譯的高級配置,但這超出了我的理解。

在網上搜索後,似乎PyInstaller具有多平臺功能,但有些資源狀態表明python腳本只能編譯用於正在編譯的操作系統,所以也許這甚至不可能,但我很難相信這一點。

在此先感謝您的幫助!

+0

在linux上,你只需運行'python mySript.py'。從來沒有聽說過將python編譯爲二進制文件,但我沒有專家。誰知道它可能。編輯:檢查這個線程 - http://stackoverflow.com/questions/12339671/how-to-compile-python-script-to-binary-executable – yoK0

回答

3

pyInstaller不打算用作交叉編譯器,並且不支持這樣做。事實上,這是the FAQ第一個答案:

  1. 我可以使用PyInstaller作爲一個交叉編譯器?

    1. 我可以在Linux下運行時打包Windows二進制文件嗎?

      不,這不支持。請爲此使用Wine,PyInstaller在Wine中運行良好。你也可能想看看郵件列表中的這個線程。在1.4版本中我們已經爲此提供了一些支持,但它只顯示了一半。它需要在另一個分區上安裝一些Windows系統,並且只能用於純Python程序。只要你需要一個像樣的GUI(gtk,qt,wx),你就需要安裝Windows庫。所以使用Wine更容易。

    2. 我可以在Linux下運行時打包OS X二進制文件嗎?

      這是目前不可能的。抱歉!如果你想幫忙,你非常歡迎。

,當然你會問,如果你可以在Windows下運行時打包的Linux二進制文件,但是,你可以猜測,答案是一樣的。

即使pyInstaller本身不能這樣做,這並不一定意味着它不可能不可能;這只是一個非常困難的事情。

那麼,什麼可以你呢?那麼,一個顯而易見的可能性就是運行帶有Linux(或者用戶模式Linux或類似的東西)的虛擬機。然後,與虛擬機共享源目錄,ssh到虛擬機中,然後從那裏運行pyInstaller。

+0

感謝您的回答abarnert,我瞭解交叉編譯爲創建一個彙編可以用於跨平臺,例如一個尺寸適合所有。再次感謝! – ploo

+1

@ploo:術語可能有點混亂。將Python腳本(.py文件)編譯爲Python字節碼(.pyc文件),這是跨平臺的。但是構建一個本地可執行文件(.exe文件),那不是;你需要在每個平臺上有不同的本地可執行文件 – abarnert