मैं साइथन के लिए काफी नया हूं लेकिन मैं और जानने की कोशिश कर रहा हूं, क्योंकि मैं काफी बड़े और जटिल सेट को कॉल करने में सक्षम होना चाहता हूं सीधे पायथन से सी/सी ++ कोड।साइथन के लिए नया ... उचित रूप से रैम enum को प्रतीत नहीं कर सकता
मैं उदाहरणों के माध्यम से ठीक से चलाने में सक्षम हूं और मुख्य परियोजना का एक बहुत छोटा हिस्सा लपेटने में भी सक्षम हूं जिस पर मैं काम कर रहा हूं। लेकिन मैं रैपिंग enums पर फंस गया है।
मैंने एक बहुत ही सरल उदाहरण में जो कोशिश कर रहा हूं उसे तोड़ने की कोशिश की है।
यहाँ सी कोड, myenum.h में यहाँ है
// myenum.h
enum strategy {
slow = 0,
medium = 1,
fast = 2
};
यहाँ है कि मैं क्या pymyenum.pyx
# distutils: language = c
cdef extern from "myenum.h" namespace "myenum":
cdef enum strategy:
slow,
medium,
fast
में एक wapper के रूप में काम करेगा सोचा है और मेरे setup.py
हैfrom distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize(
"pymyenum.pyx", # our Cython source
sources=["myenum.h"], # additional source file(s)
language="c", # generate C code
))
इस निर्देशिका में, मैं
चलाने 0python setup.py build_ext --inplace
और मुझे अपना pymyenum.so मिलता है, कि मैं आयात कर सकता हूं! हाँ! लेकिन मैं रणनीति तक नहीं पहुंच सकता।
In [1]: import pymyenum
In [2]: pymyenum.
pymyenum.c pymyenum.pyx pymyenum.so
In [2]: pymyenum.strategy
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-80980071607b> in <module>()
----> 1 pymyenum.strategy
AttributeError: 'module' object has no attribute 'strategy'
In [3]: from pymyenum import strategy
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
<ipython-input-3-9bae6637f005> in <module>()
----> 1 from pymyenum import strategy
ImportError: cannot import name strategy
मुझे इस से बाहर निकलने के लिए सही उदाहरण नहीं मिल रहा है। किसी भी व्यक्ति के लिए अग्रिम धन्यवाद जो मदद कर सकता है!
मैट
यह काम किया! धन्यवाद! –
और मुझे 'cdef' और' cpdef' के बीच अंतर को समझाने के लिए समय निकालने के लिए धन्यवाद। शिक्षा की बहुत सराहना करते हैं। –
@MattBellis यदि यह आपके प्रश्न का उत्तर देता है तो उसे टिक पर क्लिक करके स्वीकार किए गए उत्तर के रूप में चिह्नित करना सुनिश्चित करें :-) –