尝试将 pyx 文件导入 Jupyter 时出现“ImportError: No module named ...”

AJH*_*JHC 10 python cython python-3.x jupyter-notebook

我将此文件em.pyx与 Jupyter 笔记本放在同一文件夹中,我尝试在其中导入它,但它给了我错误

ImportError: No module named em
Run Code Online (Sandbox Code Playgroud)

我试过添加

import sys
sys.path.insert(0, 'name_of_directory_where_pyxfile_is')
Run Code Online (Sandbox Code Playgroud)

或者

sys.path.append('my/path/to/module/folder')
Run Code Online (Sandbox Code Playgroud)

正如此处此处所建议的那样,但我不断收到相同的错误。我还创建了一个 empy__init__.py 文件,但什么也没有。

编辑:然后我添加

import pyximport
pyximport.install()
Run Code Online (Sandbox Code Playgroud)

之前import em,现在我从python 2.7中得到很多错误(我不知道为什么python2,因为pyx的编译是用python3制作的,并且jupyter内核也设置为Python3);前三个是:

ImportError                               Traceback (most recent call     last)
<ipython-input-2-778b3d13b1ae> in <module>()
  2 pyximport.install()
  3 
----> 4 import em1d

/home/me/.local/lib/python2.7/site-packages/pyximport/pyximport.pyc in     load_module(self, fullname)
460                                  self.pyxbuild_dir,
461                                  build_inplace=self.inplace,
--> 462                                      language_level=self.language_level)
463         return module
464 

/home/me/.local/lib/python2.7/site-packages/pyximport/pyximport.pyc in     load_module(name, pyxfilename, pyxbuild_dir, is_package, build_inplace,     language_level, so_path)
231                 raise exc.with_traceback(tb)
232             else:
--> 233                 exec("raise exc, None, tb", {'exc': exc, 'tb': tb})
234     return mod
235 
Run Code Online (Sandbox Code Playgroud)

EDIT2:另外,运行后pyximport.install()我得到(None, None)

小智 0

可能会发生导入,因为您尝试.pyx直接导入到 python 中。您需要首先Cython安装pyxinstall. 这可能会有所帮助。

但你可以尝试一下其他方法。尝试将 pyx 文件转换为 py 文件,然后导入该文件。你的工作将会完成,但会牺牲速度。