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