Uno de los módulos para mi aplicación usa funciones de un archivo .pyd. Hay una opción para excluir dlls (exclude_dlls) pero ¿hay alguna para incluirlos? El proceso de compilación no parece copiar el .pyd en mi módulo a pesar de copiar el resto de los archivos (.py). También necesito incluir un .dll. ¿Cómo hago para que py2exe incluya archivos .pyd y .dll?Incluyendo PYDs/DLL en compilaciones py2exe
Respuesta
Si no se detectan automáticamente, intente copiarlos manualmente en el directorio de compilación temporal de py2exe. Se incluirán en el ejecutable final.
Puede modificar el script de configuración para copiar los archivos de forma explícita:
script = "PyInvaders.py" #name of starting .PY
project_name = os.path.splitext(os.path.split(script)[1])[0]
setup(name=project_name, scripts=[script]) #this installs the program
#also need to hand copy the extra files here
def installfile(name):
dst = os.path.join('dist', project_name)
print 'copying', name, '->', dst
if os.path.isdir(name):
dst = os.path.join(dst, name)
if os.path.isdir(dst):
shutil.rmtree(dst)
shutil.copytree(name, dst)
elif os.path.isfile(name):
shutil.copy(name, dst)
else:
print 'Warning, %s not found' % name
pygamedir = os.path.split(pygame.base.__file__)[0]
installfile(os.path.join(pygamedir, pygame.font.get_default_font()))
installfile(os.path.join(pygamedir, 'pygame_icon.bmp'))
for data in extra_data:
installfile(data)
etc ... modificar para que se adapte a sus necesidades, por supuesto.
Tal vez usted podría utilizar la opción de configurar data_files():
import glob
setup(name='MyApp',
# other options,
data_files=[('.', glob.glob('*.dll')),
('.', glob.glob('*.pyd'))],
)
data_files debe ser una lista de tuplas, donde cada tupla contiene:
- El directorio de destino.
- Una lista de archivos para copiar.
Esto no va a poner los archivos en library.zip, que no debería ser un problema para los archivos DLL, pero no sé acerca de los archivos PYD.
.pyd's y .DLL son diferentes aquí, en el sentido de que un .pyd debe ser encontrado automáticamente por el buscador del módulo y así se incluye (siempre que tenga la declaración de "importación" apropiada) sin necesidad de hacer nada. Si se pierde uno, usted hace lo mismo que si se omitiera un archivo .py (ambos son solo módulos): use la opción "incluir" para las opciones de py2exe.
Modulefinder no encontrará necesariamente dependencias en .DLLs (py2exe puede detectar algunas), por lo que puede necesitar incluirlas explícitamente, con la opción 'data_files'.
Por ejemplo, en la que tuvo dos ('foo.dll' y 'bar.dll') de .DLL para incluir, y tres de .pyd ('module1.pyd', 'module2.pyd', y 'Module3. PYD ') para incluir:
setup(name='App',
# other options,
data_files=[('.', 'foo.dll'), ('.', 'bar.dll')],
options = {"py2exe" : {"includes" : "module1,module2,module3"}}
)
En la versión actual de py2exe, data_files debe verse así: data_files = [(DIR, [FILE, FILE, FILE]), ...] –
Cuando hago esto, necesito usar "incluye" en lugar de "incluir "o py2exe se queja. – talljosh
Tengo el mismo problema para encontrar archivos pyd y ya he intentado incluir el recurso faltante, pero py2exe todavía no pudo encontrarlo. –
- 1. compilaciones automatizadas
- 2. py2exe para generar dlls?
- 3. py2exe + sqlalchemy + sqlite problema
- 4. Py2exe lxml woes
- 5. py2exe setup.py con iconos
- 6. ¿PyPy funciona con Py2Exe?
- 7. Incluyendo imágenes en javadocs
- 8. incluyendo parámetros en OPENQUERY
- 9. Cómo instalar el modulo py2exe en Linux
- 10. problema de multiprocesamiento [pyqt, py2exe]
- 11. Agrupar recursos GTK con py2exe
- 12. py2exe no genera un ejecutable
- 13. py2exe - generar solo archivo ejecutable
- 14. ¿Por qué automatizar compilaciones?
- 15. Ningún módulo llamado pyopencl (Py2exe)
- 16. ¿Hay alguna alternativa a py2exe?
- 17. Incluyendo docstring en Sphinx Documentation
- 18. Incluyendo archivo PHP en Joomla
- 19. Incluyendo DB2JCC4 en Tomcat 7
- 20. ¿Type.GUID identifica de forma única cada tipo en las compilaciones?
- 21. ¿Cómo limpiar viejas compilaciones fallidas en TeamCity?
- 22. Uso de System.Diagnostics.Contract en Release compilaciones
- 23. ¿Cómo puedo evitar compilaciones simultáneas en CruiseControl.NET?
- 24. ASIHTTPRequest falla en las compilaciones de producción
- 25. Maven - Varias compilaciones en una sola pom
- 26. Android biblioteca proyectos personalizados compilaciones
- 27. py2exe no puede encontrar el paquete Tix
- 28. MemoryLoadError al intentar ejecutar la aplicación py2exe
- 29. incluyendo módulos de controlador
- 30. postal incluyendo archivos ocultos
Sí, pero lo ideal es que debe ser parte de la secuencia de comandos setup.py o poner en mi archivo por lotes para crear el ejecutable. – TheObserver