Índice
- Problema 1: O arquivo .exe é muito grande
- Pergunta 2: o pyinstaller não é compatível com a versão opencv-python
- Pergunta 3: Ao abrir o arquivo, ele informa que o arquivo ***.pyd já existe
- Pergunta 4: Quando o pyinstaller empacota, ele informa que o UPX não está disponível.
- Outro: Veja o método de configuração bem-sucedida do CUDA
pyinsatller -F -w main.py
Problema 1: O arquivo .exe é muito grande
Comando de empacotamento:
pyinsatller -F -w main.py
Solução alternativa:
criou um novo ambiente virtual onde as bibliotecas necessárias foram reinstaladas .
Instale as dependências do ambiente virtual:
pip install virtualenv
pip install virtualenvwrapper-win
Encontre onde seu python.exe está localizado e crie um ambiente virtual
mkvirtualenv -p="E:\\Python\python.exe" pyinenv
Digite cmd no diretório do arquivo que precisa ser empacotado e use o seguinte comando para alternar para o ambiente virtual
workon pyinenv
Use o comando python main.py
para executar o programa principal a ser compactado e baixe os módulos ausentes na sequência de acordo com o pop-up.
Nota: Você precisa reinstalar pyqt5 e pyqt5-tools, bem como pyinstaller, etc., e nenhum erro será relatado durante essas operações.
Ao fazer o download, descobri que o cuda na tocha ocupa muita memória, simplesmente cancelei a parte que usa cuda para acelerar no código, e apaguei o arch-cuda e baixei novamente a tocha sem cuda, archivision, etc.
Referência: Resolva o problema de o arquivo exe compactado ser muito grande
Pergunta 2: o pyinstaller não é compatível com a versão opencv-python
Depois que a embalagem estiver concluída, a seguinte janela será exibida.
Solução : Modifique a versão do opencv-python pip install opencv-python==4.5.1.48
que estou usando a versão do python e pyinstaller da seguinte forma:
PyInstaller: 5.1
Python: 3.9.0
opencv-python:4.5.1.48
Pergunta 3: Ao abrir o arquivo, ele informa que o arquivo ***.pyd já existe
Adicione o seguinte código entre a e 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
Após a operação, substitua-o por este comando de empacotamento:
pyinstaller main.spec
Aviso: O arquivo de aviso Pyinstaller --onefile já existe, mas não deveria.
Aviso: O arquivo já existe, mas não deveria : C:\Users\workAI\AppData\Local\Temp_MEI132522\torch_C
参考:【Python】Python打包exe报错makespec options not válido quando um arquivo.spec é fornecido
Pergunta 4: Quando o pyinstaller empacota, ele informa que o UPX não está disponível.
Solução:
(1) Acesse o site oficial https://upx.github.io/ e baixe o UPX (o meu é a versão Windows 64), o download é um pacote compactado
(2) Descompacte para obter o arquivo upx.exe
(3) Copie o arquivo exe para o diretório pyinstaller.exe , o meu é C:\Users\HASEE\Envs\pyinenv\Scripts
Referência: UPX não está disponível quando pacotes pyinstaller
Finalmente, a embalagem está completa e pode ser usada com sucesso. (O processo de embalagem demorou cerca de 4 minutos)
Outro: Veja o método de configuração bem-sucedida do CUDA
(1) No cmd, preste atenção na configuração do ambiente cuda. Estou no ambiente pytorch aqui, então o ambiente pytorch deve ser ativado primeiro.
(2) Entre no arquivo python
import torch
print(torch.cuda.is_available())
Retornar True indica que a configuração está completa.
Referências para instalar CUDA e pytorch antes da Referência
:
1: Tabela de comparação da versão CUDA e versão do driver da placa gráfica (atualizada para 2022.10.26 - CUDA11.8)
2: Verifique a versão CUDA instalada
3: win10+Anaconda+pytorch+CUDA11.1 Detalhado guia de instalação
4: [Pytorch] instalação do pytorch (incluindo o tutorial de instalação detalhado do cuda)
yi , j = ∑ m = 0 h − 1 ∑ n = 0 w − 1 ∑ k = 0 c − 1 wm , n , kxi + m , j + n , k + b 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}+byeu , j=∑m = 0h - 1∑n = 0w - 1∑k = 0c - 1cm , n , kxi + m , j + n , k+b