Cythonを含むライブラリのパッケージ化でImportError

基本的には下記のページが参考になる.

https://github.com/cython/cython/wiki/PackageHierarchy

ほとんど問題なく, "python setup.py build_ext -i"で上の例ならdvedit以下にcore.soができ, "import dvedit.core"が通るのだが, "python setup.py build_ext install"とした場合に同じことをすると以下のようになってしまった.

$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import dvedit.core
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named core
>>>

"import devedit"は通るので悩んだのだが, 次のような理由によるものだった.

このpythonを実行しているディレクトリはsetup.pyの場所と同じであり, そこにはcythonのソースを格納しているdeveditというディレクトリがある. しかもそこには__init__.pyも存在するため, ここでpythonを実行し, "import dvedit"とするとこのソースディレクトリを見に行っていた. しかも, ここにはcore.soはインストールされていない(-iオプションをつけた場合はまさにここにcore.soが生成される)ため, 上記のようなエラーが出るのだった.

従ってどこか適当な場所に移動して同様に"import dvedit.core"を実行すると問題なく動いた.