2014-02-05 15 views
8

我打包通過gobject內省依賴於幾個C庫的python應用程序。我想確保至少安裝了glib中的python模塊(即gi模塊,在Debian中打包爲python-gi,我不是在討論已棄用的PyGObject模塊)。將它作爲常規依賴項添加會導致安裝失敗,因爲它不在Pypi中。如何在setup.py(和所需的C庫)中聲明對gi.repository的依賴?

我該如何申報?我看了一個setuptool文檔,沒有看到這個技巧。

謝謝。

相關問題:

+0

我想了解如何做到這一點。如果您想組隊,可以通過我的個人資料頁面發送電子郵件給我。 – tobias47n9e

回答

1

不能指定非Python的依賴關係使用setuptools(據我所知,這是...)。

install_requires關鍵字setuptools.setup只能指定Python風格的依賴關係;它針對Python打包基礎結構。 Python風格的安裝程序(pip,easy_installpython setup.py install)將使用策略來解決此類依賴關係,以便僅查找和解析Python樣式包。其中一種策略是使用像PyPI這樣的包裝索引。

如果您想要使用Debian軟件包倉庫創建一個具有Debian風格的依賴關係的軟件包(Debian風格的安裝程序已經解決了這個問題),您必須創建一個Debian軟件包。有些工具支持從Python項目創建Debian軟件包,例如easydebstdeb。但是,大多數人推薦進行額外的英里,並明確創建一個Debian軟件包。

在一般情況下,通過PyPI打包和分發Python項目應該是一條路。它獨立於平臺和發行版,可以很好地與Python專用安裝程序搭配使用,如pip以及virtualenv擴展等工具。依賴於PyGI將涉及將事實記錄給用戶,例如, the pydbus packages確實在其自述:

它基於PyGI,Python的自省GObject的綁定,這 是使用GLib的在Python的推薦方式。不幸的是,PyGI的 沒有打包在pypi上,所以你需要從你的發行版的倉庫(通常稱爲python-gi,python-gobject或者 pygobject3)安裝它。

從PyGI導入時,當導入失敗時,您的項目也可能是防禦性的,向用戶展示「請sudo apt-get install python-gi」等易消化的錯誤消息。

+0

不完全是一個答案,但我並沒有真正期望更多:-)但是,是的,Debian包裝的東西,是我經常最終做的。語言特定的包裝,如果可行的話,快速設置基本的開發。環境,當事情變得「真實」時根本不會削減它。 – Cans

相關問題