Toda la documentación de Pyinstaller se refiere a incluir archivos individuales. ¿Es posible incluir un directorio, o debo escribir una función para crear la matriz de inclusión al atravesar mi directorio de inclusión?Incluyendo un directorio usando Pyinstaller
Respuesta
Me estoy sorprendido de que nadie mencionó el funcionario opción soportada mediante Tree()
:
https://stackoverflow.com/a/20677118/2230844
https://pythonhosted.org/PyInstaller/advanced-topics.html#the-toc-and-tree-classes
¿Qué tal si usamos glob
?
from glob import glob
datas = []
datas += glob('/path/to/filedir/*')
datas += glob('/path/to/textdir/*.txt')
...
a.datas = datas
pegue el siguiente después de a = Analysis()
en el archivo de especificaciones para atravesar un directorio recursivamente y añadir todos los archivos en ella para la distribución.
##### include mydir in distribution #######
def extra_datas(mydir):
def rec_glob(p, files):
import os
import glob
for d in glob.glob(p):
if os.path.isfile(d):
files.append(d)
rec_glob("%s/*" % d, files)
files = []
rec_glob("%s/*" % mydir, files)
extra_datas = []
for f in files:
extra_datas.append((f, f, 'DATA'))
return extra_datas
###########################################
# append the 'data' dir
a.datas += extra_datas('data')
Disculpe, pero en realidad no lo consigue. Tengo un directorio llamado '~/Scripts'. Mis datos se almacenan en '~/Scripts/Data'. ¿Debo sustituir 'a.datas + = extra_datas ('data')' por 'a.datas + = extra_datas ('Data')'? –
Si su script pyInstaller también está en 'Scripts' y lo llama con' python mybuildscript.py' desde 'Scripts', entonces sí, debe sustituirlo por' Data', de lo contrario use '.' y' ..' para navegar el árbol de directorios. – styts
- 1. pyinstaller con un estructor de directorio no trivial
- 2. Incluyendo un archivo de encabezado de otro directorio
- 3. ¿Cómo instalar PyInstaller?
- 4. Python: compilación con Pyinstaller
- 5. PyInstaller crea el ejecutable lento
- 6. Copie un directorio usando NSIS.
- 7. Python: sin incluir los módulos Pyinstaller
- 8. extracción usando git incluyendo el submódulo
- 9. 'no atexit módulo denominado' cuando corro un programa implementado usando PyInstaller
- 10. PyInstaller, archivo de especificaciones, ImportError: Ningún módulo llamado 'blah'
- 11. Ignorando un directorio usando ack's .ackrc
- 12. ¿Cómo crear un directorio usando StreamWriter?
- 13. Cómo copiar un directorio usando Ant
- 14. postal incluyendo archivos ocultos
- 15. Crear directorio usando Nant
- 16. Copiar directorio usando Qt
- 17. incluyendo módulos de controlador
- 18. Agregar imagen al archivo .spec en Pyinstaller
- 19. Ejecutables de Python: py2exe o PyInstaller?
- 20. ¿Qué es mejor, PyInstaller o cx_Freeze?
- 21. archivos PyInstaller pero manteniendo .py actualizables
- 22. incluyendo un archivo remoto en PHP
- 23. Incluyendo glib.h en un proyecto de CMake
- 24. Enviando correo electrónico HTML usando PHP: incluyendo el archivo HTML
- 25. Dinámica Incluyendo jQuery usando JavaScript si no está presente
- 26. Incluyendo tablas duplicadas usando ORM Extra de Django()
- 27. Intentando escribir un archivo en un directorio diferente usando fopen()
- 28. Incluyendo un archivo erb en otro
- 29. Incluyendo javascript en línea usando content_for en rieles
- 30. Incluyendo imágenes en javadocs
Gracias por compartir, usando [la clase Tree] (https://pythonhosted.org/PyInstaller/advanced-topics.html#the-tree-class) me lo resolvió de una manera elegante. Ahora solo necesito esta línea: 'a.datas + = Tree ('./ dir_to_include', prefix = 'dir_to_include')' – sunyata
sí, creo que simplemente no está suficientemente documentado, pero esta fuente abierta, por lo que Los RP son bienvenidos :) – denfromufa