2010-09-21 78 views
2

我知道有一種方法可以導入與python壓縮文件中的模塊。我在一個zip文件中創建了一種自定義的python包庫。有沒有辦法從bash運行zip文件中的python腳本?

我想把我的「任務」腳本放在這個包中,那些正在使用庫。然後,用bash,我想在zip文件中調用所需的腳本,而不用提取zip。

目標是當我想運行我的腳本時,只有一個zip文件在指定的文件夾中移動。

回答

6

我終於找到了一種方法來做到這一點。如果我創建一個zip文件,我必須在zip的根目錄下創建__main__.py。因此,有可能推出主打內線的腳本,如果從慶典用下面的命令調用:

python myArchive.zip

此命令將運行__main__.py文件! :)

然後,我可以創建.command文件以啓動具有適當參數的腳本。

如果您需要傳遞參數,您還可以在__main__.py文件中添加一些代碼,以便爲您提供更多的靈活性。

例如:python __main__.py buildProject

的參考文檔是在這裏:https://docs.python.org/2/library/runpy.html

+0

太好了。我以爲你想在zip壓縮文件中任意調用「any」腳本。 – Rod 2010-09-21 18:53:35

+0

基本上這是我想要的,但沒有解壓縮文件。所以這是我發現的唯一途徑。 – ForceMagic 2010-09-21 19:58:41

3

看看zipimport。它應該從安裝直接工作。你可能需要做一些工作來使pythonpath指向你的zip文件/目錄。

此模塊增加了導入 Python模塊的能力(*的.py,*的.py [CO])和來自ZIP格式檔案 包。 通常不需要明確使用 zipimport模塊;它是 自動使用的內置 導入機制的sys.path項目 是ZIP檔案的路徑,即ZIP檔案的路徑。

+0

我的意思是爲了創建一個.command文件,是啓動所需的腳本運行與bash命令Zip文件裏python腳本。也許這是不可能沒有python? – ForceMagic 2010-09-21 14:34:43

+0

我不知道任何可以直接在zip壓縮文件中調用腳本的東西。可悲的是,你必須依靠python來讀取防止你使用__main__ ==「__main__」成語的python腳本。 – Rod 2010-09-21 15:11:59

+0

好的,非常感謝! 相反,我會嘗試找到一些東西來創建一個像我的python文件一樣的應用程序。因爲在當前的情況下,我只需要一個文件,我的用戶可以點擊並使用其模塊運行腳本。 我在考慮py2app,因爲我在Mac上。 – ForceMagic 2010-09-21 15:20:19

相關問題