我正在寫一些代碼在cython中,並且我有一些"Packages 「within」 modules"。 —這實際上是跟隨我的問題,結構應該是相同的。問題是,這是cython,所以我正在處理.so
的不是.py
的。__init__.so(而不是__init__.py)掩碼子包
有__init__.so
作品的是,
import mystuff
將工作範圍,但它似乎掩蓋之下的所有子包。也就是,
import mystuff.test.test1
不會。我收到一個ImportError: No module named ...
錯誤。
我該如何解決這個問題?在編譯到.c
之前,我需要將其添加到.pyx
嗎?或者,也許我可以將__init__.so
重命名爲其他內容,並以某種方式將其重命名爲__init__.py
(請注意,__init__.py
仍然需要與.so
一起存在以顯示它是一個包)。或者是其他東西。
更新:__path__
屬性不是.so
包中定義...
好吧,我有一個想法,也許我可以解決這個問題通過操縱封裝的__path__
屬性。有趣的是,這是爲.py
包定義的,但是導致.so
的錯誤。這不是一個解決方案,但我想知道它是否是問題的根源。
我曾想過把它放在一個單獨的文件中,並從'__init __。py'中導入它,但是擔心會導致兩個模塊被污染,導致我可以執行相同的操作。我想在「真實」模塊的名稱中放一個'.'來阻止它被導入,但是當然這會阻止它從'__init __。py'中導入!然後我陷入困境,尋找複雜的解決方案,它並沒有跨越我的想法,只是強調了它。也許簡單的解決方案是最好的。謝謝。 – tjm