คำถามติดแท็ก cython

12
การห่อไลบรารี C ใน Python: C, Cython หรือ ctypes?
ฉันต้องการเรียกไลบรารี C จากแอปพลิเคชัน Python ฉันไม่ต้องการห่อทั้ง API เฉพาะฟังก์ชันและประเภทข้อมูลที่เกี่ยวข้องกับกรณีของฉัน ตามที่เห็นฉันมีสามตัวเลือก: สร้างโมดูลส่วนขยายจริงใน C. อาจเป็นไปได้มากเกินไปและฉันยังต้องการหลีกเลี่ยงค่าใช้จ่ายในการเรียนรู้การเขียนส่วนขยาย ใช้Cythonเพื่อแสดงส่วนที่เกี่ยวข้องจาก C library ไปยัง Python ทำสิ่งทั้งหมดใน Python ctypesเพื่อใช้สื่อสารกับไลบรารีภายนอก ฉันไม่แน่ใจว่า 2) หรือ 3) เป็นตัวเลือกที่ดีกว่าหรือไม่ ข้อได้เปรียบของ 3) คือctypesส่วนหนึ่งของไลบรารีมาตรฐานและโค้ดผลลัพธ์จะเป็น Python แท้ๆ - ถึงแม้ว่าฉันไม่แน่ใจว่าประโยชน์นั้นใหญ่เพียงใด มีข้อดี / ข้อเสียมากกว่าทั้งสองทางเลือกหรือไม่? คุณแนะนำวิธีใด แก้ไข:ขอบคุณสำหรับคำตอบทั้งหมดของคุณพวกเขาให้ทรัพยากรที่ดีสำหรับทุกคนที่ต้องการทำสิ่งที่คล้ายกัน แน่นอนว่าการตัดสินใจยังคงต้องทำในกรณีเดียว - ไม่มีใครตอบ "นี่คือสิ่งที่ถูกต้อง" สำหรับกรณีของฉันเองฉันอาจจะไปกับ ctypes แต่ฉันก็ตั้งตารอที่จะลอง Cython ในโครงการอื่น เมื่อไม่มีคำตอบที่แท้จริงเพียงคำเดียวการยอมรับคำตอบก็ค่อนข้างเป็นการสุ่ม ฉันเลือกคำตอบของ FogleBird เพราะให้ข้อมูลเชิงลึกที่ดีเกี่ยวกับ ctypes …
284 python  c  ctypes  cython 

6
Cython:“ ข้อผิดพลาดร้ายแรง: numpy / arrayobject.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว”
ฉันพยายามเร่งคำตอบที่นี่โดยใช้ Cython ฉันพยายามรวบรวมรหัส (หลังจากทำการcygwinccompiler.pyแฮ็คอธิบายที่นี่ ) แต่ได้รับfatal error: numpy/arrayobject.h: No such file or directory...compilation terminatedข้อผิดพลาด ใครช่วยบอกฉันได้ไหมว่ามันเป็นปัญหากับรหัสของฉันหรือความซับซ้อนลึกลับกับ Cython ด้านล่างนี้คือรหัสของฉัน import numpy as np import scipy as sp cimport numpy as np cimport cython cdef inline np.ndarray[np.int, ndim=1] fbincount(np.ndarray[np.int_t, ndim=1] x): cdef int m = np.amax(x)+1 cdef int n = x.size cdef unsigned …

10
ฉันจะจัดโครงสร้างแพ็คเกจ Python ที่มีรหัส Cython ได้อย่างไร
ฉันต้องการสร้างแพ็คเกจ Python ที่มีรหัสCython ฉันมีรหัส Cython ที่ใช้งานได้ดี อย่างไรก็ตามตอนนี้ฉันต้องการทราบวิธีที่ดีที่สุดในการจัดแพคเกจ สำหรับคนส่วนใหญ่ที่ต้องการติดตั้งแพ็กเกจฉันต้องการรวม.cไฟล์ที่ Cython สร้างและจัดเตรียมsetup.pyเพื่อรวบรวมเพื่อสร้างโมดูล จากนั้นผู้ใช้ไม่จำเป็นต้องติดตั้ง Cython เพื่อติดตั้งแพ็คเกจ แต่สำหรับผู้ที่อาจต้องการแก้ไขแพ็คเกจฉันก็ต้องการที่จะให้.pyxไฟล์Cython และยังอนุญาตให้setup.pyสร้างโดยใช้ Cython (ดังนั้นผู้ใช้เหล่านั้นจะต้องติดตั้ง Cython) ฉันจะจัดโครงสร้างไฟล์ในแพ็กเกจเพื่อรองรับทั้งสองสถานการณ์นี้ได้อย่างไร เอกสาร Cython ให้คำแนะนำเล็ก แต่ไม่ได้บอกว่าจะสร้างซิงเกิ้ลsetup.pyที่จัดการทั้งเคสที่มี / ไม่มี Cython ได้อย่างไร
122 python  packaging  cython 

4
การคอมไพล์ด้วย cython และ mingw สร้าง gcc: error: ตัวเลือกบรรทัดคำสั่งที่ไม่รู้จัก '-mno-cygwin'
ฉันพยายามรวบรวมส่วนขยาย python กับ cython ใน win 7 64 บิตโดยใช้ mingw (64 บิต) ฉันกำลังทำงานกับ Python 2.6 (Active Python 2.6.6) และมีไฟล์ distutils.cfg ที่เพียงพอ (ตั้งค่า mingw เป็นคอมไพเลอร์) เมื่อดำเนินการ > C:\Python26\programas\Cython>python setup.py build_ext --inplace ฉันได้รับข้อผิดพลาดแจ้งว่า gcc ไม่มีตัวเลือก -mno-cygwin: > C:\Python26\programas\Cython>python setup.py build_ext --inplace running build_ext skipping 'hello2.c' Cython extension (up-to-date) building 'hello2' extension C:\mingw\bin\gcc.exe …

1
ไม่มีโมดูลชื่อ 'Cython' ที่มีการติดตั้ง pip ของ tar.gz
ฉันใช้บทกวีเพื่อสร้างไฟล์ tar.gz และ whl สำหรับแพ็คเกจตัวอย่างของฉัน ( https://github.com/iamishalkin/cyrtd ) จากนั้นลองติดตั้งแพคเกจภายในสภาพแวดล้อม pipenv การติดตั้ง tar.gz ล้มเหลวและนี่เป็นบันทึกชิ้นส่วน: $ poetry build ... $ pip install dist/cyrtd-0.1.0.tar.gz Processing c:\work2\cyrtd\dist\cyrtd-0.1.0.tar.gz Installing build dependencies ... done Getting requirements to build wheel ... done Preparing wheel metadata ... done Requirement already satisfied: cython<0.30.0,>=0.29.13 in c:\users\ivan.mishalkin\.virtualenvs\cyrtd-tpdvsw8x\lib\site-packages (from cyrtd==0.1.0) (0.29.15) Building …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.