2017-06-22 41 views
-1

我分叉好模塊multiscorer,我試圖把它變成一個包,我可以安裝在不同的環境中。最小模塊的破壞setup.py實現

我的叉子可以找到here。我所採取的步驟是

  • 創建一個新的環境(使用康達)並激活它
  • 從叉
  • 在一個新的終端的根目錄python setup.py install,激活環境和移動到一些任意位置。開始ipython並嘗試from multiscorer import MultiScorer

我收到以下錯誤ImportError: cannot import name 'MultiScorer'。但請注意,import multiscorer工作得很好。我需要更改代碼才能使用python setup.py install進行安裝?

另一次嘗試:我試圖用py_modules=['multiscorer.multiscorer']替換packages=['multiscorer']。沒有幫助...

+0

您確定沒有拼寫問題嗎? '從multiscorer導入MultiScorer' - >'ImportError:無法導入名稱'Multiscorer'' – am2

+0

@ am2這是一個錯字。問題仍然存在。 – Dror

回答

0

原來我試圖導入錯誤的東西。以下內容:from multiscorer.multiscorer import MultiScorer的作品。

我現在想知道的是這種pythonic的方式。

+0

_pythonic_,imho似乎有點過於冗長。更重要的是,因爲你可以避免第二個'multiscorer'(見我的回答):) –

2

你的setup.py是沒問題的。問題是包裝結構。現在導入Multiscorer類的正確方法是:from multiscorer.multiscorer import Multiscorer。第一個multiscorer用於相同名稱的文件夾(包),第二個multiscorer用於包內的multiscorer.py模塊。

The docs建議將這些小包中的所有代碼放在__init__.py之內。 如果您的代碼庫後來對於一個文件變得太大,您可以開始引入其他模塊,並使用__init__.py來暴露程序包級別的類/函數。

希望這會有所幫助。