Cython编译模块在单独的目录中

时间:2017-10-10 09:53:59

标签: python cython cythonize

我是cython的新手。

我有以下目录结构。

cython_program/
cython_program/helloworld.py
cython_program/lib/printname.py

helloworld.py

import lib.printname as name

def printname():
    name.myname()

printname.py:

def myname():
    print("this is my name")

setup.py:

from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

ext_modules = [
    Extension("helloworld",  ["helloworld.py"]),
    Extension("mod",  ["./lib/printname.py"]),
]

setup(
    name = 'My Program',
    cmdclass = {'build_ext': build_ext},
    ext_modules = ext_modules
)

我遇到的问题是当我使用python setup.py build_ext --inplace目录中的cython_program编译程序时。它确实成功编译程序并在lib文件夹中生成printname.c文件。

但是当我将printname.py和helloworld.py移动到一个单独的文件夹以确保我的cython编译代码正在运行时。它给了我以下错误ImportError: No module named lib.printname

为什么不使用主helloworld.py文件编译模块(lib.printname)?

注意:如果我将helloworld.py和printname.py保存在同一个文件夹中,这样可以正常工作。

提前致谢。

1 个答案:

答案 0 :(得分:4)

这是setup.py中的一个简单问题。

更改了这一行:

Extension("mod",  ["./lib/printname.py"]),

To This:

Extension("lib.printname",  ["./lib/printname.py"]),