¿Cómo hacer que el módulo de Python sea compartido? -- python campo con linux campo con python-2.7 campo con cython campo con cythonize camp Relacionados El problema

How to make Python module shareable?


4
vote

problema

Español

Tenemos un módulo basado en Python que queremos distribuir a nuestros clientes al crear una copia compilada comprensible por Linux System (i.e. .SO Archivo)

Hemos evaluado el cython que hace esto con bastante facilidad, pero estamos viendo que está creando tantos archivos. Sobre como .pyx / .py file pero queremos hacer un archivo Uber .SO para un paquete completo. Queremos hacerlo con inteligencia en cierta medida que si agregamos dependencia a otro módulo en el futuro, Uber Compiled File debe tener todas las dependencias.

¿Alguna recomendación, cómo podemos hacerlo perfectamente?

Original en ingles

We have a python based module which we want to distribute to our customers by creating a compiled copy understandable by linux system(i.e. .so file)

We have evaluated cython which does this quite easily, but we're seeing it's creating as many .so file as .pyx/.py file but we want to make one uber .so file for complete package. We want to do it smartly in a sense that if we add dependency to other module in future, uber compiled file should have all the dependencies.

Any recommendations, how we can do it neatly?

              
         
         

Lista de respuestas

2
 
vote

cx_freeze puede crear paquetes reoraterables de los módulos de Python.

Por ejemplo:

// ... var resultNode = resultsTree.children[i]; if (resultNode.type == "suite") { // Don't display inactive suites if (!hasActiveSpec(resultNode)) { continue; } // var suiteListNode = ... // ... } 0

Si el paquete de Python está compilado o, Python regular no es realmente relevante. Lo que es relevante es que sus clientes deberán tener una versión compatible con Python, así como Compatible LIBC / GCC, para ejecutarlo.

Para los fines de distribuir un módulo de Python a terceros, un solo 9988777661111 no será compatible con todos. Siempre.

// ... var resultNode = resultsTree.children[i]; if (resultNode.type == "suite") { // Don't display inactive suites if (!hasActiveSpec(resultNode)) { continue; } // var suiteListNode = ... // ... } 2 Paquetes La versión de intérprete de Python requerida y los paquetes de Python, por lo que no hay dependencias. También es multiplataforma.

 

cx_freeze can create re-distributable packages of python modules.

For example:

cxfreeze my_script_using_my_python_module.py --target-dir dist

Whether the python package is compiled or regular python is not really relevant. What is relevant is that your customers will need to have compatible python version, as well as compatible libc/gcc, to run it.

So for the purposes of distributing a python module to third parties, a single .so will not be compatible with everyone. Ever.

cx_freeze bundles the required python interpreter version and python packages so there are no dependencies. It is also cross-platform.

 
 
   
   

Relacionados problema

2  Interfaz de Nivel C de Cython Of Package: * .pxd archivos no se encuentran  ( Cython c level interface of package pxd files are not found ) 
en una cáscara de nuez Intento compilar una extensión de cytón llamada extension2 que cimporta un archivo extension desde un paquete auto-creado. Al c...

2  Error al compilar el archivo de cython en BuildOzer  ( Error compiling cython file in buildozer ) 
He construido una aplicación de Android usando Kivy y mientras la compilaba para construir un APK usando BuildOzer, apareció el siguiente error; [INFO]: ...

2  Guardar extensión de cython por Pickle  ( Save cython extension by pickle ) 
Tengo una clase o tipo de extensión escrito en <table width="360" height="161" border="1" class="tablestyle"> <tr> <td height="36" colspan="5" bgcolor="#ECE9...

5  Cython “no permitido en una expresión constante”, False boundscheck no funciona  ( Cython not allowed in a constant expression boundscheck false doesnt work ) 
Soy relativamente nuevo en Cython y he encontrado un error que mi investigación me ha fallado en (estoy usando python3 en spyder y mi versión Sython es de 0,2...

3  Cython que devuelve un doble complejo a un complejo flotador hace que la expresión no esté en pura c  ( Cython returning a double complex to a float complex causes the expression not t ) 
Tengo un problema al tratar de usar Complex64_T en Cython. Aquí está mi ejemplo de cytón simple. cimport numpy as cnp cdef extern from "complex.h": do...

0  Convertir el proyecto Python en C  ( Convert python project into c ) 
Soy nuevo en Python pero tengo experiencia en c. Tengo un proyecto de Python 3, incluido un archivo from .model import BaseClass 1 y algunos archivos fro...

-1  Cython a interfaz entre Python y C-Library con matriz de caracteres de tamaño desconocido  ( Cython to interface between python and c library with unknown size char array ) 
Tengo una biblioteca C que lee los datos binarios de un archivo, la convierte y almacena todo en un gran carácter * para devolver los datos a cualquier cosa q...

2  ¿Cómo excluir archivos .py y'pyc cuando se construyen un paquete de condena citóticos?  ( How to exclude py and pyc files when building a cythonized conda package ) 
Tengo un script { "device_identifier":"324234234", "name":"NameMe", "list":[ {"prop":"A","prop2":-10}, {"prop":"B","prop2":-12} ...

3  Singleton no está trabajando en Cython  ( Singleton is not working in cython ) 
Así es como definía Singleton. class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: ...

3  AtributeError de Cython Class  ( Cython class attributeerror ) 
He comenzado a experimentar con el cytón y corrí al siguiente problema. Considere la siguiente clase que representa un vértice en el espacio 3D: #Vertex.py...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos