2017-10-10 107 views
1

我是cython的新手。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 
) 

我遇到的問題是當我在cython_program目錄中使用python setup.py build_ext --inplace編譯我的程序時。它會成功編譯程序並在lib文件夾中生成printname.c文件。

但是,當我將printname.py和helloworld.py移動到一個單獨的文件夾以確保我的cython編譯代碼正在運行。它給我以下錯誤ImportError: No module named lib.printname

爲什麼不編譯模塊(lib.printname)也與主helloworld.py文件?

注意:如果我將helloworld.py和printname.py保留在同一個文件夾中,此工作正常。

在此先感謝。

+0

考慮接受你自己的答案...... –

回答

1

這是一個簡單的問題,在setup.py

改變了這一行:

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

這樣:

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