我剛剛學習爲我的項目編寫setup.py
文件的藝術。我看到有很多談論setuptools
,這應該是優於distutils。有一件事,但我不明白,我沒有看到它在我讀過的任何教程中解決:如果setuptools沒有安裝?我知道這不是標準庫的一部分,所以你怎麼能假設想安裝你的程序的人將安裝它?如果setuptools未安裝,該怎麼辦?
回答
您不能假定它已安裝。有辦法,你可以回退distutils(但爲什麼有setuptools首先),或者你可以在setup.py中安裝setuptools(但我認爲這是邪惡的)。
只有在需要的時候才使用setuptools。
當涉及到setuptools vs distrubute時,它們是兼容的,而選擇一個則主要取決於用戶。 setup.py是相同的。
你可以從這裏
http://pypi.python.org/pypi/setuptools
下載Windows EXE安裝程序和一個Linux RPM然後,一旦你有setuptools的到位,你可以使用easy_install
命令完成下載並安裝新的軟件包。由於easy_install也會自動下載和安裝依賴項,因此您可能需要在實際使用之前設置virtualenv。這樣,您可以決定是否要將一堆軟件包安裝到系統的默認Python安裝中。
是的,這意味着你的用戶必須安裝setuptools才能使用它。當然,你可以使用setuptools安裝程序,重命名它們,並將它們打包成像NSIS一樣,並將其分發給用戶。事實是,你必須安裝一些東西,所以如果你不想把你的應用程序放到安裝程序中,你可以打包setuptools。
所以我對我的用戶說:「要安裝我的程序,你必須安裝setuptools」? – 2009-11-03 10:42:09
問題不在於「如何安裝setuptools」,而是「用戶沒有安裝setuptools」。 – 2009-11-03 10:42:43
如果用戶沒有它,唯一可以做的就是讓他們下載EXE或RPM並安裝它。或者分發setuptools而不是您的應用程序。編輯回答說這個。 – 2009-11-03 14:17:12
在我爲python安裝的大多數圖書館中,警告apears「您必須安裝setuptools」。你也可以這樣做,我想,你可以添加一個鏈接,以便用戶不必在網上搜索它。
+1:如何在自述文件中包含「使用setuptools」一詞? – 2009-11-03 12:55:57
我認爲這是一樣的。無論如何,當沒有安裝setuptools時會引發異常,因此您必須處理它。 – TiPoK 2009-11-03 13:43:52
使用setuptools發佈軟件包的標準方式包括一個ez_setup.py
腳本,它將自動下載並安裝setuptools本身 - 在Windows上,我相信它實際上會安裝easy_install
的可執行文件。你可以從標準的setuptools/easy_install發行版中獲得。
我會說這取決於你正在尋找什麼樣的用戶。
如果他們只是用戶而不是Python程序員,或者他們是基本的程序員,那麼使用setuptools可能會有點太多。對於那些distutils是完美的。
對於客戶,我肯定會堅持distutils。
對於更多發燒友程序員來說,setuptools會很好。
不知何故,它也取決於你想如何分配更新,以及多久。例如,用戶是否有權訪問互聯網,而無需公司設置惡意代理來阻止setuptools? - 我們有一個,這是一個額外的步驟來配置並使其在每個工作站上都能正常工作。
我已經使用setuptools編譯了許多我寫入windows EXE的python腳本。但是,我一直認爲(從經驗中)運行編譯的EXE的計算機不需要安裝設置工具。
希望幫助
- 1. 期待列表[未來],如果未來失敗,該怎麼辦?
- 2. 如果_POSIX_VDISABLE值爲-1,該怎麼辦?
- 3. 如果collections.defaultdict不可用,該怎麼辦?
- 4. 如果拋出IOException,我該怎麼辦?
- 5. 如果google.load失敗,該怎麼辦?
- 6. 如果mysql_query()失敗,該怎麼辦?
- 7. 如何安裝setuptools?
- 8. 如果函數的參數未定義,該怎麼辦? (PHP)
- 9. 如果LocationListener.onLocationChanged未被調用,該怎麼辦?
- 10. 如果目標網址未返回,該怎麼辦
- 11. 如果favicon未命名爲favicon.ico,該怎麼辦?
- 12. 如果payment_status在PapPal中未完成,我該怎麼辦?
- 13. 應用內結算 - 未安裝Play商店應用時該怎麼辦?
- 14. 需要Google Play服務,但Google Play(市場)未安裝。該怎麼辦?
- 15. android:setAdapter()未解決。該怎麼辦?
- 16. 未找到Java xerces DocumentBuilderFactoryimpl - 該怎麼辦?
- 17. 鈦認爲我有3.1.2,但我安裝了3.4.1。該怎麼辦?
- 18. 點擊升級安裝錯誤的Django版本:該怎麼辦?
- 19. 無法安裝@ angular/cli - 我該怎麼辦?
- 20. 我該怎麼辦?
- 21. NullPointerException - 該怎麼辦?
- 22. Python pip安裝不工作怎麼辦?
- 23. 如果未安裝postgres,我該如何安裝DBD :: Pg?
- 24. 如果call_user_func應該返回false,該怎麼辦?
- 25. 安裝setuptools後Kivy Buildozer - 「No module named setuptools」
- 26. GoogleScraper安裝錯誤 - setuptools必須安裝
- 27. NSUnknownKeyException查看...該怎麼辦?
- 28. 我該怎麼辦在PHP
- 29. 我該怎麼辦日期
- 30. GWT JDBC我該怎麼辦?
對於它的價值,有些人都在談論移動到[分配] [1]從setuptools的... [1]:http://pypi.python.org/ pypi /分發 – Kylotan 2009-11-03 10:56:06
...似乎標記在評論中的工作方式不同。 ;) – Kylotan 2009-11-03 10:56:37
沒有魔法彈。爲了用setuptools安裝你的應用程序,某個地方的某個人不得不引導setuptools進入系統,而不使用easy_install。這可能是用戶,它可能是發行人,或者它可能是你,用你的應用程序內置setuptools來構建你的安裝程序。 – 2009-11-03 14:19:14