2017-09-23 57 views
0

我想使用類似urllib.request的Python模塊,但將所有模塊的依賴關係放在文件中,我可以在計算機上使用它們,而無需安裝整個Python。如何將Python模塊及其依賴關係複製到文件中

是否有一個模塊或工具可用於將特定模塊複製到文件中,並且它是依賴關係,而無需通過整個腳本並手動複製它。我正在使用Python 3.

回答

1

有很多選項可以做這種事情。首先想到的是python內置的zip支持;如果您的zip中有__main__.py,則在zip文件上運行python將以腳本的形式運行它。簡單的(純python,非操作系統相關的)軟件包應該簡單地嵌入到這樣一個zip文件中。

或者,諸如cx_Freeze之類的工具可以按照操作系統特定的方式打包包含解釋器的依賴項的腳本。這通常會導致更大的佔用空間,因爲結果包也包含解釋器,但允許在本地組件中包含更復雜的依賴項;我不確定這是可能的與python的zip導入功能。

+0

我對第一部分並不熟悉。如果我把它放入一個zip文件,它會像普通模塊一樣運行? '__main __。py'只需要是普通模塊包含的內容?你知道我在哪裏可以找到這方面的文件嗎?感謝這個可能的解決方案(+1)。 – Simon

+0

我真的不知道這個文檔在哪裏住,對不起。 – Anonymouse

+1

作爲一個實驗,我創建了一個virtualenv,在其中安裝了請求,將'venv/lib/python3.5/site-packages'中的所有內容複製到zip文件的根目錄下,放入一個簡單的'__main __。py'('導入請求; print(requests.get(「http://ix.io/M3M」).text)'),並試圖在沒有可用請求的python中運行它。它的工作:)我實際上不知道這些功能,但它似乎工作很神奇。 – Anonymouse

1

使用容器技術。例如,Docker讓您可以將代碼與依賴關係移植到您想要的任何計算機上,而無需在計算機中安裝任何新東西,同時也節省了大量時間。

+1

感謝您的答案,但我決定在這種情況下其他答案更有用。 – Simon