[英]Cython module doesn't work
我正在尝试使用Cython生成一个简单的斐波那契算法。 我有fib.pyx:
def fib(int n):
cdef int i
cdef double a=0.0, b=1.0
for i in range(n):
a, b = a + b, a
return a
和setup.py在同一个文件夹中:
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules=cythonize('fib.pyx'))
然后我打开cmd并cd到我的方式到这个文件夹并构建代码(我有[ http://www.microsoft.com/en-us/download/details.aspx?id=44266] (这个编译器):
python setup.py build
产生这个结果:
C:\Users\MyUserName\Documents\Python Scripts\Cython>python setup.py build
Compiling fib.pyx because it changed.
Cythonizing fib.pyx
running build
running build_ext
building 'fib' extension
creating build
creating build\temp.win-amd64-2.7
creating build\temp.win-amd64-2.7\Release
C:\Anaconda\Scripts\gcc.bat -DMS_WIN64 -mdll -O -Wall -IC:\Anaconda\include -IC:
\Anaconda\PC -c fib.c -o build\temp.win-amd64-2.7\Release\fib.o
writing build\temp.win-amd64-2.7\Release\fib.def
creating build\lib.win-amd64-2.7
C:\Anaconda\Scripts\gcc.bat -DMS_WIN64 -shared -s build\temp.win-amd64-2.7\Relea
se\fib.o build\temp.win-amd64-2.7\Release\fib.def -LC:\Anaconda\libs -LC:\Anacon
da\PCbuild\amd64 -lpython27 -lmsvcr90 -o build\lib.win-amd64-2.7\fib.pyd
所以看起来编译工作,我应该能够导入这个模块
import fib
ImportError: No module named fib
我哪里做错了? 编辑:
os.getcwd()
Out[6]: 'C:\\Users\\MyUserName\\Documents\\Python Scripts\\Cython\\build\\temp.win-amd64-2.7\\Release'
In [7]: import fib
Traceback (most recent call last):
File "<ipython-input-7-6c0ab2f0a4e0>", line 1, in <module>
import fib
ImportError: No module named fib
编译工作但是库位于: build\\lib.win-amd64-2.7
因此您必须复制/移动当前目录中的文件或将当前目录更改为该目录。
您可以在命令运行的最后部分看到这一点:
-o build\lib.win-amd64-2.7\fib.pyd
-o
选项代表输出,并指定应将最终编译文件放在何处。
使用python setup.py build_ext --inplace
--inplace flag会将你的pyd放在工作目录中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.