我有一個簡單的腳本,它依賴於dnspython來解析區域文件。我想將這個腳本作爲一個單獨的.py來發布,只要安裝了2.6/2.7,用戶就可以運行它。我不希望用戶在站點範圍內安裝依賴項,因爲可能會與現有的軟件包/版本發生衝突,也不希望他們使用virtualenv。我想知道是否有一種方法在腳本中嵌入像dnspython這樣的包(gzip/base64),並讓該腳本在運行時訪問該包。也許解壓縮到/ tmp中的目錄並將其添加到sys.path?我並不擔心啓動開銷,我只想包含一個可以分發的單獨的.py /所有依賴項。有沒有辦法在python腳本中嵌入依賴關係?
另外,不會有C依賴性來構建,只有純Python包。
編輯:腳本不一定是.py。只要它是一個單一的可執行文件即可。
如果您可以放寬一個文件限制,您可以將dnspython庫與.py文件一起打包,既可以作爲zip文件,也可以作爲常規獨立文件 - 這將解決依賴性問題。你堅持只有一個文件嗎? – 2012-07-11 16:10:32
許可證地獄的道路鋪設嵌入... – 2012-07-11 16:13:53
@MahmoudAbdelkader我想這會工作。在查看其他地方之前,Python會查看包的當前目錄(儘管我認爲這個順序在3中改變)。仍然希望有一種方法可以將所有依賴關係打包爲用戶可以運行並且沒有任何問題的可執行文件。我想它不一定是.py。 – 2012-07-11 16:28:53