gratis - Construyendo extensiones de Python C de 64 bits en Windows
python 3 64 bits windows (2)
He compilado exitosamente las extensiones C para Python en Windows de 64 bits ejecutando los siguientes comandos desde el "Símbolo de comando de Visual Studio 2008 x64 Win64" en el directorio de nivel superior de la distribución de origen de la extensión:
set DISTUTILS_USE_SDK=1
set MSSdk=1
python setup.py install
Estoy haciendo esta pregunta porque necesito crear un módulo específico (aspell_python, http://wm.ite.pl/proj/aspell-python/ ) para trabajar con mi Python 2.6 de 64 bits que se ejecuta en Windows 7 (por supuesto, máquina). También siempre quise saber cómo acelerar ciertas funciones con el código C, por lo que me gustaría crear mis propios módulos C externos para Python en el futuro.
¿Alguien puede decirme los pasos necesarios para construir con éxito una extensión de Python de 64 bits en C? Conozco Python, conozco C, pero no conozco los problemas específicos de Visual Studio o los desarrolladores específicos de Windows. Intenté seguir la guía oficial en el sitio web de Python (http://docs.python.org/extending/windows.html#building-on-windows) usando Visual Studio 2008 (que es el único producto comercial disponible aquí) pero incluso el ejemplo más básico no podría construirse.
Usaría Shed Skin : solo descargue, descomprima, ejecute el comando init y compile su código Python .
Si eso no funciona, y puedes hacer funcionar el entorno del compilador C de Microsoft, prueba Cython . Este tutorial compara una extensión de Python normal con su versión C generada. Extracto actualizado:
c_prime.pyx:
def calculate(long limit):
cdef long current
cdef long divisor
primes = []
divisor = 0
for current in range(limit):
previous = []
for divisor in range(2, current):
if current % divisor == 0:
break
if divisor == current - 1:
primes.append(current)
return primes
setup.py:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
name = ''PrimeTest'',
ext_modules=[
Extension(''c_prime'', [''c_prime.pyx''])
],
cmdclass = {''build_ext'': build_ext}
)
compilar:
python setup.py build_ext --inplace --compiler=msvc
test_prime.py:
from timeit import Timer
t = Timer(''c_prime.calculate(10000)'', ''import c_prime'')
reps = 5
print(sum(t.repeat(repeat=reps, number=1)) / reps)