Yararlı bir şekilde sarmak mümkün görünmüyor, ancak oldukça geniş ve karmaşık bir dizi C/C++ kodu doğrudan Python'dan.Cython'da Yeni ...
Örnekler arasında geçiş yapabildim ve üzerinde çalıştığım ana projenin çok küçük bir bölümünü bile tamamlayabiliyorum. Ama envanterlere sarıldım.
Çok basitleştirilmiş bir örnekte denediğimi anlamaya çalıştım. İşte
İşte// myenum.h
enum strategy {
slow = 0,
medium = 1,
fast = 2
};
Ben pymyenum.pyx
# distutils: language = c
cdef extern from "myenum.h" namespace "myenum":
cdef enum strategy:
slow,
medium,
fast
bir wapper olarak çalışmak düşündüm ne myenum.h içinde, C kodu Ve burada benim setup.py
olduğunu Bu dizindefrom 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
))
, ben
çalıştırmakve pymyenum.so'yu alabilirim, alabilirim! Evet! Fakat stratejiye erişemiyorum.
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
Bundan kurtulmak için doğru örneği bulamıyorum. Yardım edebilecek herkes için şimdiden teşekkürler!
Matt
Bu işe yaradı! Teşekkürler! –
Ve cdef' ve cpdef' arasındaki farkı bana açıklamak için zaman ayırdığınız için teşekkürler. Eğitimi çok takdir ediyorum. –
@MattBellis, bu soruları yanıtlarsa, onaylanmış yanıt olarak işaretle işaretine tıkladığınızdan emin olun :-) –