traducir online from python c++ cython

from - python to c++ converter online



Especificar archivo de salida de cython (3)

Parece que, de forma predeterminada, la configuración de distutils.core con cmdclass establecido en build_ext, compila un archivo cpp o c en el directorio de trabajo actual. ¿Hay una manera de determinar dónde se escribe el código c generado? De lo contrario, un repositorio estará lleno de código generado.

Por ejemplo, este archivo setup.py escribirá un archivo example.c en el directorio de trabajo actual:

from distutils.core import setup from Cython.Build import cythonize setup( ext_modules = cythonize("example.pyx"))


Puede pasar la opción build_dir="directory name" a Cythonize

# rest of file as before setup( ext_modules = cythonize("example.pyx", build_dir="build"))

El código anterior colocará los archivos c generados en el directorio "build" (lo que tiene sentido, ya que de manera predeterminada es donde distutils coloca los archivos de objetos temporales y así sucesivamente cuando se construye).

Mi respuesta original build_dir , no build_dir . Gracias a @ArthurTacca por señalar que eso ya no parece estar bien.


Tu setup.py está bien.

Para hacer que se compile en una ubicación diferente, invoca python de la siguiente manera:

python setup.py build_ext --build-lib <build directory>

Yo uso las siguientes reglas de make para automatizar esto:

python_lib_dir=src/lib cython_output = $(patsubst $(python_lib_dir)/%.pyx,$(python_lib_dir)/%.so, $(shell find $(python_lib_dir) -name ''*.pyx'')) $(cython_output):%.so:%.pyx python setup.py build_ext --build-lib $(python_lib_dir)


después de inicializar una extensión, los parámetros se pueden configurar para crear c en el directorio temporal.

module = Extension("temp", "temp.pyx") module.cython_c_in_temp = True