Tabla de contenido
- Problema 1: el archivo .exe es demasiado grande
- Pregunta 2: pyinstaller no es compatible con la versión opencv-python
- Pregunta 3: al abrir el archivo, indica que el archivo ***.pyd ya existe
- Pregunta 4: cuando pyinstaller empaqueta, indica que UPX no está disponible.
- Otro: Ver el método de configuración exitosa de CUDA
pyinsatller -F -w main.py
Problema 1: el archivo .exe es demasiado grande
Comando de embalaje:
pyinsatller -F -w main.py
Solución alternativa:
creó un nuevo entorno virtual donde se reinstalaron las bibliotecas necesarias .
Instale las dependencias del entorno virtual:
pip install virtualenv
pip install virtualenvwrapper-win
Encuentre dónde se encuentra su python.exe y cree un entorno virtual
mkvirtualenv -p="E:\\Python\python.exe" pyinenv
Ingrese cmd en el directorio de archivos que debe empaquetarse y use el siguiente comando para cambiar al entorno virtual
workon pyinenv
Use el comando python main.py
para ejecutar el programa principal que se va a empaquetar y descargue los módulos que faltan en secuencia de acuerdo con la ventana emergente.
Nota: debe reinstalar pyqt5 y pyqt5-tools, así como pyinstaller, etc., y no se informarán errores durante estas operaciones.
Al descargar, descubrí que cuda en torch ocupa mucha memoria. Simplemente cancelé la parte que usa cuda para acelerar en el código, borré torch-cuda y volví a descargar torch sin cuda, torchvision, etc.
Referencia: Resuelva el problema de que el archivo exe empaquetado es demasiado grande
Pregunta 2: pyinstaller no es compatible con la versión opencv-python
Una vez completado el empaquetado, aparece la siguiente ventana.
Solución : modifique la versión de opencv-python. pip install opencv-python==4.5.1.48
Estoy usando la versión de python y pyinstaller de la siguiente manera:
PyInstaller: 5.1
Python: 3.9.0
opencv-python:4.5.1.48
Pregunta 3: al abrir el archivo, indica que el archivo ***.pyd ya existe
Agregue el siguiente código entre a y p:
for b in a.binaries.copy(): # Traver the binaries.
for d in a.datas: # Traverse the datas.
if b[1].endswith(d[0]): # If duplicate found.
a.binaries.remove(b) # Remove the duplicate.
break
Después de la operación, reemplácelo con este comando de empaquetado:
pyinstaller main.spec
参考:El archivo de advertencia Pyinstaller --onefile ya existe pero no debería
参考:ADVERTENCIA: el archivo ya existe pero no debería: C:\Users\workAI\AppData\Local\Temp_MEI132522\torch_C参考:
【Python】Python打包exe报错makespec options not válido cuando se proporciona un archivo .spec
Pregunta 4: cuando pyinstaller empaqueta, indica que UPX no está disponible.
Solución:
(1) Vaya al sitio web oficial https://upx.github.io/ y descargue UPX (la mía es la versión de Windows 64), la descarga es un paquete comprimido
(2) Descomprimir para obtener el archivo upx.exe
(3) Copie el archivo exe en el directorio pyinstaller.exe , el mío es C:\Users\HASEE\Envs\pyinenv\Scripts
Referencia: UPX no está disponible cuando los paquetes de pyinstaller
Finalmente, el embalaje está completo y se puede utilizar con éxito. (El proceso de empaquetado tomó alrededor de 4 minutos)
Otro: Ver el método de configuración exitosa de CUDA
(1) En cmd, preste atención a la configuración del entorno cuda. Estoy en el entorno pytorch aquí, por lo que el entorno pytorch debe activarse primero.
(2) Entrar en el archivo python
import torch
print(torch.cuda.is_available())
Devolver True indica que la configuración está completa.
Referencias para instalar CUDA y pytorch antes Referencia
:
1: Tabla de comparación de la versión de CUDA y la versión del controlador de la tarjeta gráfica (actualizada a 2022.10.26 - CUDA11.8)
2: Compruebe la versión de CUDA instalada
3: win10+Anaconda+pytorch+CUDA11.1 detallada guía de instalación
4: [Pytorch] instalación de pytorch (incluido el tutorial de instalación detallado de cuda)
yi , j = ∑ metro = 0 h − 1 ∑ norte = 0 w − 1 ∑ k = 0 do − 1 wm , norte , kxi + metro , j + norte , k + segundo y_{i,j}=\sum_{ m=0}^{h-1}\sum_{n=0}^{w-1}\sum_{k=0}^{c-1}w_{m,n,k}x_{i+m, j+n,k}+byyo , j=∑metro = 0h − 1∑norte = 0w − 1∑k = 0c − 1wm , n , kXyo + metro , j + norte , k+b