es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo establecer la codificación del código fuente de Python con SWIG.

Cuando envuelvo una biblioteca con swig:

bash
swig -python my_ext.i

Esto genera un archivo my_ext.py.

¿Cómo puedo agregar la encoding del archivo en la primera línea cuando creo mi extensión con distutils.extension.Extension?

# -*- coding: utf-8 -*-

He intentado:

%pythonbegin %{<h1>-*- coding: utf-8</h1>%}

Pero mi comentario se agrega después del banner de swig.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar la codificación de archivos en la primera línea al crear una extensión con distutils.extension.Extension, se puede utilizar el parámetro extra_compile_args para pasar banderas adicionales al proceso de compilación. Específicamente, se puede agregar la bandera -Xcompiler, seguida de la codificación deseada en forma de un literal de cadena. Por ejemplo:

    from distutils.extension import Extension
    
    my_ext_module = Extension(
        name='_my_ext',
        sources=['my_ext_wrap.cxx', 'my_ext.cpp'],
        extra_compile_args=['-Xcompiler', '"-fencoding=utf-8"']
    )
    

    Esto agregará la bandera -fencoding=utf-8 al proceso de compilación, lo que asegurará que el archivo del módulo generado (_my_ext.so) comience con la declaración de codificación deseada:

    # -*- coding: utf-8 -*-
    

    Tenga en cuenta que se debe reemplazar _my_ext con el nombre real de su módulo de extensión, y ajustar los nombres y las rutas de archivo de acuerdo con la estructura de su proyecto. Además, asegúrese de usar comillas dobles alrededor del literal de cadena de codificación para garantizar una correcta escapado de caracteres especiales.

Comments are closed.