簡體   English   中英

Cython模塊不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM