2016-09-14 168 views
0

我已經創建了一個在我的筆記本電腦上使用Pycharm用Python編寫的簡單 - 中等複雜性腳本,我希望使用Crontab在我的Raspberry Pi上運行此腳本。我以前的所有編程經驗都是在Windows中使用C++和C#,因此我通常只需構建項目並將其全部編譯並鏈接到一個可執行文件中。「編譯」Python在另一臺機器上運行

對於Python來說,如何「編譯」腳本以便可以在另一臺PC上運行?我使用一些外部庫(請求和ImgurClient),我必須使用Pycharm應用程序進行安裝。我想我認爲這些需要傳遞給RaspPi也是正確的?我的腳本有兩個文件,所以我需要複製這兩個文件?有沒有辦法將它們構建成單個文件以便輕鬆使用?

這是我寫的第一個腳本,僅僅是從我對其他語言的知識和一些Google搜索中所寫的。現在只是不知道如何繼續,我有實際的腳本。

+1

無需編譯,所有你需要的是Python在目標機器上兼容的版本。之後,它就像複製.py文件並運行它一樣簡單。 –

+0

這可能會幫助您http://sackoverflow.com/questions/11409416/moving-a-python-script-to-another-computer – jh44tx

+0

即使在Linux上,也可以將解釋器,腳本和代碼打包到單個獨立的可執行文件中,但是**你真的不想**。這會讓你的程序啓動起來要慢得多,如果你只是按照傳統的方式完成工作 - 也就是通過複製Python源文件(可能打包成Python蛋或類似文件),安裝解釋器和任何必要的庫依賴關係,然後使用該解釋器運行該文件。 [在一些較大的機器上,啓動開銷可能是可以忍受的,但是在一個Pi上,它會變得非常慢很多。 –

回答

1

如果您已經在樹莓派安裝Python,然後從外殼,你只需要運行:

# This installs pip (Python installer) as well as the requests library 
sudo apt-get install python-pip 

一旦被安裝,運行:

# To install the ImgurClient 
pip install imgurpython 

那麼你可以只通過鍵入運行你的shell腳本:

python your_script_name.py 

如果您還沒有安裝的Python,只需運行以下命令別人之前進行安裝:

sudo apt-get install python 
+0

已經打包了'requests',還是應該在這裏添加? –

+0

'requests'被安裝爲'pip'安裝的一部分 – ode2k

+0

我遇到了'pip install imgurpython'命令的問題。我得到一個「ImportError:cannoy導入名稱IncompleteRead」錯誤。你知道這可能是什麼原因嗎?謝謝 –

0

Python不需要編譯,因爲它是一種解釋性語言。只要你沒有進行系統調用,你就可以在另一臺機器上運行它。如果你正在嘗試在Linux機器上使用windows命令等,系統調用只會成爲一個問題。

只需將這兩個文件複製到pi中,然後像正常一樣運行即可。或從終端

python program.py 
+0

我不需要安裝我正在使用的外部庫嗎?我做'導入請求'等,所以樹莓派需要知道如何找到這個。 –

+0

@TomDippé,是的,你需要安裝它們,但你正在運行Debian;它有他們(很好,絕對'請求')打包。 –

+0

@TomDippé如果你不確定包含的軟件包,你可以隨時查看你的python路徑。但查爾斯是正確的,因爲大部分圖書館都會在那裏。唯一不可能的是你以後安裝的額外庫,即不是像numpy或scipy這樣的默認python庫。然後使用pip來安裝,apt或類似anaconda的東西。 –

0

使用PyInstaller。在終端,創建一個獨立的EXE只是用這樣的命令:

pyinstaller -F myscript.py 
+0

不適用於Raspberry Pi - 那些不運行.exe文件,而且您真的不希望PyInstaller的啓動時間開銷無論如何。 –

+0

RaspPi正在運行Raspbian(基於Debian),因此無法作爲exe運行 –

+0

@TomDippé,... PyInstaller實際上並不僅僅是Windows - 它也可以創建Linux可執行文件 - 但這些Linux可執行文件將是在一個Pi上運行的痛苦緩慢(以及開始運行)。 –

0

你可以「編譯」 Python文件到.pyc,但你仍然需要在RaspPi Python解釋器來運行它們。

在沒有Python的PC上,您可以使用py2exe創建獨立的可執行文件,但可執行文件必須在Windows上運行。

你必須在你的樹莓派安裝Python解釋器,或者創建擁有py2exe可執行靶向樹莓派(如果該平臺上存在py2exe),這將是另一個樹莓派:)

另一種選擇將會是Cython,但是外部庫和你想要使用的庫一樣複雜,這將是一條非常困難的路線。

Python on Raspberry Pi

Creating python exes on Linux

0

至於其他的答案說,你可以運行在PI代碼,因爲Python代碼解釋並沒有遵守。

這就是說,你需要預先安裝任何Python包,比如ImgurClient。如果你在PC上使用PyCharm,你可能需要在Pi上使用pip

0

我不知道您是否可以在其他環境中運行python腳本,特別是如果腳本使用通常使用pip安裝的外部庫(.whl)。

一個很好的選擇,以在一個乾淨的環境中運行的腳本是使用的virtualenv:

https://virtualenv.pypa.io/en/stable/

「它創造的是有自己的安裝目錄的環境下,不共享與其他的virtualenv庫環境(並且可選地不訪問全局安裝的庫)「

然後只安裝必要的庫以運行腳本。如果你導出這個新的環境,你可能會運行你的腳本沒有任何問題。

相關問題