Tengo un script simple que usa vpython (solo pruebas) y quiero crear un archivo .exe con pyinstaller.
Este es el guión:
from visual import* box()
Luego corro en la consola:
pyinstaller sss.py
Pero el .exe no funciona (obviamente)
He estado buscando en Google sobre cómo hacer el archivo .spec para vpython pero no encuentro nada.
También intenté hacer este archivo .spec
# -*- mode: python -*- block_cipher = None a = Analysis(['sss.py'], pathex=['C:\\Users\\hdfh\\Documents\\Python Scripts'], binaries=None, datas=None, hiddenimports=(['visual','vis','visual_common','viddle']), hookspath=[], runtime_hooks=[], excludes=[], win_no_prefer_redirects=False, win_private_assemblies=False, cipher=block_cipher) pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher) exe = EXE(pyz, a.scripts, exclude_binaries=True, name='sss.exe', debug=False, strip=None, upx=True, console=False ) coll = COLLECT(exe, a.binaries, a.zipfiles, a.datas, strip=None, upx=True, name='sss')
Pero no funcionó
Me responderé, tal vez ayude a alguien.
Cuando se usa pyinstaller con vpython e intenta ejecutar el archivo .exe, tiene problemas para encontrar los archivos TGA ubicados en
C:\Anaconda2\Lib\site-packages\visual_common
Así que tenemos que editar los materiales de archivo.py
C:\Anaconda2\Lib\site-packages\visual_common\materials.py
Aquí buscamos el código.
import sys if hasattr(sys,'frozen') and (sys.frozen=="windows_exe" or sys.frozen=="console_exe"): texturePath="visual\\" else: texturePath = os.path.split( __file__ )[0] + "/" del sys
Para mí, funcionó cambiar texturePath=...
a otro directorio, por ejemplo C:
import sys if hasattr(sys,'frozen') and (sys.frozen=="windows_exe" or sys.frozen=="console_exe"): texturePath=os.path.abspath("C:/") else: texturePath = os.path.abspath("C:/") del sys
Guárdelo y mueva los archivos TGA de visual_common a C: / (o al lugar elegido) y finalmente intente comstackr el archivo .exe desde la consola
pyinstaller test.py
Para esto funciona …