有兩個與導入有關的問題,可能與cython相關或可能不相關?導入文件和方法的Python/Cython問題
我有以下簡化文件來重新創建問題。所有文件都在同一個目錄中。 .pyx文件已成功編譯爲*.so
,*.pyc
和*.c
文件。
setup.py:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules=cythonize("*.pyx"),
)
cy1.pyx:(用Cython)
cdef int timestwo(int x):
return x * 2
cy1.pxd:
cdef int timestwo(int x)
cy3.py:(正常蟒)
def tripleit(x):
return x*3
go.py:
from cy1 import timestwo
print str(timestwo(5))
給我的錯誤:導入錯誤:無法導入名稱timestwo
,如果我將其更改爲:
go.py:
import pyximport; pyximport.install()
import cy1
print str(cy1.timestwo(5))
它告訴我:AttributeError:'模塊'對象沒有屬性'timestwo'
如果我取出用Cython一起,並嘗試使用普通的Python的呼叫從cy3.py:
go.py:
import cy3
print str(cy3.tripeleit(3))
我得到:AttributeError的: '模塊' 對象有沒有屬性 'tripeleit'
和最後如果我這樣做:
go.py:
from cy3 import tripleit
print str(tripeleit(3))
我得到:
NameError: name 'tripeleit' is not defined
對不起,如果這是超基本的,但我似乎無法弄清楚。
你試過下面的答案嗎? – 2014-10-17 20:02:43