2009-11-03 176 views
3

我剛剛學習爲我的項目編寫setup.py文件的藝術。我看到有很多談論setuptools,這應該是優於distutils。有一件事,但我不明白,我沒有看到它在我讀過的任何教程中解決:如果setuptools沒有安裝?我知道這不是標準庫的一部分,所以你怎麼能假設想安裝你的程序的人將安裝它?如果setuptools未安裝,該怎麼辦?

+0

對於它的價值,有些人都在談論移動到[分配] [1]從setuptools的... [1]:http://pypi.python.org/ pypi /分發 – Kylotan 2009-11-03 10:56:06

+0

...似乎標記在評論中的工作方式不同。 ;) – Kylotan 2009-11-03 10:56:37

+0

沒有魔法彈。爲了用setuptools安裝你的應用程序,某個地方的某個人不得不引導setuptools進入系統,而不使用easy_install。這可能是用戶,它可能是發行人,或者它可能是你,用你的應用程序內置setuptools來構建你的安裝程序。 – 2009-11-03 14:19:14

回答

1

您不能假定它已安裝。有辦法,你可以回退distutils(但爲什麼有setuptools首先),或者你可以在setup.py中安裝setuptools(但我認爲這是邪惡的)。

只有在需要的時候才使用setuptools。

當涉及到setuptools vs distrubute時,它們是兼容的,而選擇一個則主要取決於用戶。 setup.py是相同的。

0

你可以從這裏

http://pypi.python.org/pypi/setuptools

下載Windows EXE安裝程序和一個Linux RPM然後,一旦你有setuptools的到位,你可以使用easy_install命令完成下載並安裝新的軟件包。由於easy_install也會自動下載和安裝依賴項,因此您可能需要在實際使用之前設置virtualenv。這樣,您可以決定是否要將一堆軟件包安裝到系統的默認Python安裝中。

是的,這意味着你的用戶必須安裝setuptools才能使用它。當然,你可以使用setuptools安裝程序,重命名它們,並將它們打包成像NSIS一樣,並將其分發給用戶。事實是,你必須安裝一些東西,所以如果你不想把你的應用程序放到安裝程序中,你可以打包setuptools。

+0

所以我對我的用戶說:「要安裝我的程序,你必須安裝setuptools」? – 2009-11-03 10:42:09

+3

問題不在於「如何安裝setuptools」,而是「用戶沒有安裝setuptools」。 – 2009-11-03 10:42:43

+0

如果用戶沒有它,唯一可以做的就是讓他們下載EXE或RPM並安裝它。或者分發setuptools而不是您的應用程序。編輯回答說這個。 – 2009-11-03 14:17:12

2

在我爲python安裝的大多數圖書館中,警告apears「您必須安裝setuptools」。你也可以這樣做,我想,你可以添加一個鏈接,以便用戶不必在網上搜索它。

+1

+1:如何在自述文件中包含「使用setuptools」一詞? – 2009-11-03 12:55:57

+0

我認爲這是一樣的。無論如何,當沒有安裝setuptools時會引發異常,因此您必須處理它。 – TiPoK 2009-11-03 13:43:52

4

使用setuptools發佈軟件包的標準方式包括一個ez_setup.py腳本,它將自動下載並安裝setuptools本身 - 在Windows上,我相信它實際上會安裝easy_install的可執行文件。你可以從標準的setuptools/easy_install發行版中獲得。

0

我會說這取決於你正在尋找什麼樣的用戶。

如果他們只是用戶而不是Python程序員,或者他們是基本的程序員,那麼使用setuptools可能會有點太多。對於那些distutils是完美的。

對於客戶,我肯定會堅持distutils。

對於更多發燒友程序員來說,setuptools會很好。

不知何故,它也取決於你想如何分配更新,以及多久。例如,用戶是否有權訪問互聯網,而無需公司設置惡意代理來阻止setuptools? - 我們有一個,這是一個額外的步驟來配置並使其在每個工作站上都​​能正常工作。

2

我已經使用setuptools編譯了許多我寫入windows EXE的python腳本。但是,我一直認爲(從經驗中)運行編譯的EXE的計算機不需要安裝設置工具。

希望幫助

相關問題