2017-10-10 4 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を与える。

helloworld.pyメインのファイルでもモジュール(lib.printname)をコンパイルしていないのはなぜですか?

注: helloworld.pyとprintname.pyの両方を同じフォルダに保存するとうまくいきます。

ありがとうございます。

+0

があなた自身の答えを受け入れることを検討し... –

答えて

1

setup.pyでは単純な問題でした。これに

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

このライン変更

Extension("lib.printname", ["./lib/printname.py"]), 
関連する問題