Tôi đang cố gắng tạo thuật toán Fibonacci đơn giản bằng Cython. Tôi có fib.pyx:
def fib(int n):
cdef int tôi
cdef kép a=0,0, b=1,0
cho tôi trong phạm vi (n):
a, b = a + b, a
trả lại một
Trong cùng thư mục với setup.py:
từ thiết lập nhập distutils.core
từ Cython.Build nhập cythonize
setup(ext_modules=cythonize('fib.pyx'))
Sau đó tôi mở cmd và cd vào thư mục này và sử dụng (tôi có [ http://www.microsoft.com/en-us/download/details.aspx?id=44266](cái này trình biên dịch) xây dựng mã:
xây dựng python setup.py
tạo ra kết quả này:
C:\Users\MyUserName\Documents\Python Scripts\Cython>python setup.py build
Đang biên dịch fib.pyx vì nó đã thay đổi.
Cythonizingfib.pyx
đang chạy xây dựng
đang chạy build_ext
xây dựng tiện ích mở rộng 'fib'
tạo bản dựng
tạo build\temp.win-amd64-2.7
tạo 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
viết build\temp.win-amd64-2.7\Release\fib.def
tạo 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
Vì vậy, có vẻ như quá trình biên dịch đã thành công và tôi có thể nhập mô-đun này
nhập khẩu
ImportError: Không có mô-đun có tên là sợi
Tôi đã sai ở đâu? biên tập:
os.getcwd()
Out[6]: 'C:\\Users\\MyUserName\\Documents\\Python Scripts\\Cython\\build\\temp.win-amd64-2.7\\Release'
Trong [7]: nhập fib
Traceback (most recent call last):
Tệp "", dòng 1, trong
nhập khẩu
ImportError: Không có mô-đun có tên là sợi
Biên dịch thành công nhưng thư viện nằm ở:build\lib.win-amd64-2.7
Vì vậy, bạn phải sao chép/di chuyển các tập tin trong thư mục hiện tại hoặc thay đổi thư mục hiện tại sang thư mục này.
Bạn có thể thấy điều này trong phần cuối của lệnh chạy:
-o build\lib.win-amd64-2.7\fib.pyd
-o
tùy chọn đại diệnđầu ra và chỉ định nơi đặt các tệp được biên dịch cuối cùng.
Tôi là một lập trình viên xuất sắc, rất giỏi!