我想知道處理子項目的正確/最簡單/最pythonic的方式,你想使用相同的基礎包。目前,我們有一個文件的結構是這樣的:如何用setuptools管理多個python子項目?
trunk\
proj1\setup.py
company_name\__init__.py + proj1's code
proj2\setup.py
company_name\__init__.py + proj2's code
我們要保持命名空間COMPANY_NAME共同爲我們所有的項目(?也許這本身就是unpythonic),但是當proj1和proj2安裝在開發模式中,第一個安裝被破壞。它看起來像import company_name...
弄糊塗在哪個company_name包看,並抓住第一/最後一個/隨機一個。
這通常會在更大的python項目中處理?是否有可能通過樹幹中的setup.py來解決這個問題,該樹幹構建了一些巨型蛋?我還沒有發現任何有關谷歌或堆棧的信息,所以任何信息,甚至只是鏈接,非常感謝!
編輯:我只是想添加一個setup.py在根文件夾
...
namespace_packages = ['company_name'],
package_dir = {'company_name' : ['proj1/company_name', 'proj2/company_name']}
...
與在__init_.py
文件適當pkg_resources.declare_namespace(__name__)
,但./setup.py bdist_egg
只是給:
錯誤company_name安裝命令:分發包含命名空間程序包'company_name'沒有模塊或程序包
這就是我爲'namespace_packages'設計的關鍵字,所以你的確做到了正確的方式。 – 2010-09-02 05:03:34
我的公司開始使用命名空間包,它最終成爲一個巨大的錯誤,許多功能被破壞,它們在普通項目中可用(運行單元測試,安裝很挑剔等)。只是一個警告的話。 – Lucas 2016-07-08 16:45:06