2013-05-20 21 views
2

我的Python項目包括一些聯機幫助頁和bash完成腳本。我希望在用戶安裝包時使用這些軟件包,例如pip install mypackage。我怎麼做?我只通過在setup.py中調用外部腳本(例如.sh腳本),遇到了非常野蠻的做法。有沒有更優雅的方法?如何使用Python包安裝Python代碼以外的各種文件?

回答

1

對不起,但是Python對bash,或者man,或者其他你認爲理所當然的東西一無所知。例如,Windows,一個由Python支持的廣泛部署的平臺,都沒有。其他平臺,甚至類Unix也可能沒有bash(例如使用busybox),並且不願在手冊頁上佔用存儲空間。有些用戶甚至沒有在有能力的系統上安裝bash(並且使用zsh進行交互式工作,而使用ash作爲腳本)。

因此,請將您的egg歸檔限制爲僅需要Python或Python擴展的東西。

如果你想安裝其他文件,你有幾個選項。

  1. 發佈包含存檔都爲你的包和任何可選文件,你可能要包括,可能與他們的安裝腳本,太一setup.py
  2. 爲您定位的操作系統創建適當的軟件包。其餘的將使用選項1.
  3. 從安裝腳本運行額外的安裝步驟(不推薦)。

此外,您不必提供手冊頁,只需支持--help。例如。 easy_install在Debian上沒有手冊頁,我很好。

+0

謝謝,事實證明,我完全誤解了「Python包」這個術語,認爲它是一種分發完整實用程序及其所有必需文件(如.deb包)的方式。我現在看到它只是一種組織代碼的方式。 – gvlasov

+0

Python包類似於Ruby gem或Java jar:它們旨在以與操作系統無關的方式存在於平臺提供的適當生態系統內。這有其不利之處,但它是確保平臺不同端口之間互操作性的唯一途徑。 – 9000

相關問題