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"を実行すると問題なく動いた.