Closed MarceloUnlibreProjects closed 3 months ago
rodei o exec pelo terminal do pycharm, e deu isso
Eu acabei de testar. Ontem eu havia testado no linux e windows com py 3.10 e rodou aquele sample q usei. Agora testei no py 3.11 e deu erro parecido.
Estranho. Vou tentar usar o 3.10 por enquanto, então. obg.
No python 3.11 o modulo abc.py é embutido, então não é necessário compilá-lo. Mas já encontrei uma solução, amanhã cedo estará disponível na dev68.
Entendi, vlws
You can test the patch in the latest development build (dev68):
pip install --force --no-cache --pre --extra-index-url https://marcelotduarte.github.io/packages/ cx_Freeze
Quando inicio o exec em outro sistema, fica aparecendo isso, como se n achasse o arquivo do sistema que transformei em exec. Sabe resolver isso?
Se vc me der um exemplo, um pedaço de código em q eu possa reproduzir esse erro, eu consigo resolver sim.
na verdade, é assim que importa o módulo do easyocr, mas em outro sistema (usando VM ou outro pc)
parece que ele tenta procurar pelo arquivo de outro pc, onde eu transformei em EXE
será que da para fazer ele procurar pelos arquivos que estão numa pasta personalizada? No caso, eu botaria dentro da pasta lib, do exe
parece que ele tenta procurar pelo arquivo de outro pc, onde eu transformei em EXE
A descrição de pasta no pc em que foi compilado é só para referencia de onde estava o original[1]. Digamos q vc tem um um modulo teste (teste.py) q tem a função upsample, esse modulo será copiado como bytecode para lib/teste.pyc, assim o codigo fonte não será encontrado, mas se vc colocar o teste.py ao lado dele, pode ser q o torch o encontre. Pelo q vejo, o torch procuro codigo fonte (.py) e a nossa intenção é NÃO dsitribuí-los.
[1] Para mudar isso tem a opção replace_paths.
será que da para fazer ele procurar pelos arquivos que estão numa pasta personalizada? No caso, eu botaria dentro da pasta lib, do exe
Sim, usando o include_files
Não entendi bem como funciona o replace_paths, mas vou tentar fazer o que vi em outros lugares, como botando "*", ""
Você acha que o include_files ja resolve esse problema?
no caso, seria só levar o "_jit_internal.py" para o "torch_jit_internal.py", eu acho. Mas eu fiz isso manualmente, agora, e deu na mesma, mas com o caminho atualizado:
Então, veja se copiando o _jit_internal.py para lib/torch/_jit_internal.py resolve.... Assim posso fazer automático no hook.
EDIT: Acho q precisa do source code da função procurado, de onde está essa função _DenseLayer.forward
pior que tentei copiar o _jit_internal.py para lá, mas apareceu a mesma mensagem, porem, com o caminho novo: "lib\torch_jit_internal.py:868"
aí tentei procurar o "_DenseLayer" e os outros, mas essas funções não parecem existir
grep '_DenseLayer' `find . -name '*.py' -print`
./torchvision/models/densenet.py:class _DenseLayer(nn.Module):
./torchvision/models/densenet.py: layer = _DenseLayer(
./torchvision/models/densenet.py: # '.'s are no longer allowed in module names, but previous _DenseLayer
eu botei esse .py agora na pasta "lib/torchvision/models/" e parece que a mensagem de "_DenseLayer" parou, porem ainda tem as outras. Uma pena não ter "grep" no windows ;-;
Eu acho q vc pode copiar todos os .py da pasta "lib/torchvision/models/", veja se resolve....
Quando ao grep: https://pt.stackoverflow.com/questions/215881/qual-%C3%A9-o-equivalente-ao-comando-grep-no-windows
copiei tudo do torchvision, mas ainda tava dando os mesmos erros. Aí copiei a pasta inteira do torch e torchgen sem substituir o que tava lá, e deu esse maldito erro de novo :')
Eu modifiquei o hook, teste novamente. E se der erro, me mostre um traceback com mais linhas.
You can test the patch in the latest development build (dev70):
pip install --force --no-cache --pre --extra-index-url https://marcelotduarte.github.io/packages/ cx_Freeze
@MarceloUnlibreProjects Do you get success?
Na verdade, ainda não
esse é todo o traceback:
C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample at 0x0000028D68A6F2E0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample at 0x0000028D68A6F380>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function interpolate at 0x0000028D68A6F6A0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function interpolate at 0x0000028D68A6F740>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function interpolate at 0x0000028D68A6F880>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function interpolate at 0x0000028D68A6F9C0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample_nearest at 0x0000028D68A6FC40>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample_nearest at 0x0000028D68A6FCE0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample_bilinear at 0x0000028D68A6FF60>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample_bilinear at 0x0000028D68A7C0E0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample_bilinear at 0x0000028D68A7C180>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function upsample_bilinear at 0x0000028D68A7C220>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function RNN.forward at 0x0000028D68C3B100>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function RNN.forward at 0x0000028D68C3B380>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function LSTM.forward at 0x0000028D68C3BA60>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function LSTM.forward at 0x0000028D68C3BC40>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function GRU.forward at 0x0000028D68C400E0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function GRU.forward at 0x0000028D68C402C0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function tensordot at 0x0000028D68CB9760>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function tensordot at 0x0000028D68CB9800>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function tensordot at 0x0000028D68CB9940>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function tensordot at 0x0000028D68CB9A80>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function norm at 0x0000028D68CBA0C0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function norm at 0x0000028D68CBA160>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function norm at 0x0000028D68CBA2A0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function norm at 0x0000028D68CBA3E0>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function _DenseLayer.forward at 0x0000028D6DD05580>. C:\Users\a\PycharmProjects\cxfreezeteste.venv\Lib\site-packages\torch_jit_internal.py:868: UserWarning: Unable to retrieve source for @torch.jit._overload function: <function _DenseLayer.forward at 0x0000028D68CBA5C0>. Nem CUDA nem MPS estão disponíveis - o padrão é CPU. Nota: processar imagens é muito mais rápido com uma GPU.
quando botei as pastas do torch, torchgen e torchvision na pasta lib (sem substituir) continuou com isso :/
vou tentando outros jeitos até conseguir
Vc ta usando o build mais recente? Veja com cxfreeze --version
se é cxfreeze 6.16.0-dev72
ah não, tava na 69, foi mau
é certo usar assim ou precisa botar mais coisas no package/include?
Nos meus testes, que alias sempre foram bem simples, não precisei usar nem includes, nem packages, uma vez que já trato deles no hooks. Na verdade tem hooks para torch, easyocr e triton (que é uma dependencia do torch). Para o torchvision e para o torchgen não houve ainda problemas relacionados que necessitassem fazer hooks. Mas, vc atualizando para dev72 continua dando o mesmo erro?
fiz os testes aqui, mas ainda ta igual a antes :/
Tente expandir o exemplo que utilizei ou encontre um exemplo do easyocr que possa ser usado para reproduzir o erro que vou dar mais uma olhada....
Assim, eu só to tentando importar o easyocr mesmo, e da esse problema. Mas eu to tentando rodar o EXEC num sistema diferente do meu, com Virtual Box e outro pc. Usando no meu sistema, funciona normalmente. Só acontece o problema em outro lugar
não funcionou também :/, realmente não faço a minima ideia do que pode ser
ja tentou fazer o script simples com easyocr e executar em outro sistema?
Oi, eu uso vm para testar também, mas pude fazer 2 testes numa maquina real, e num dos testes realmente apresenta varios 'UserWarning' sim, mas depois processa. O problema é q os arquivos ficam enormes, demora e nem sempre tenho acesso a maquina windows, mas vou tentar verificar mais alguma coisa.
Vamos lá, usei o seguinte sample: ocr.py
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
result = reader.readtext('chinese.jpg')
print(result)
O arquivo https://github.com/JaidedAI/EasyOCR/blob/master/examples/chinese.jpg
Testei com 2 versões do pytorch (compilei na vm e testei na maquina real q apresentou erros anteriormente):
Para instalar pytorch cpu usei:
pip install torch torchvision easyocr
Para instalar pytorch gpu usei:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118
pip install easyocr
Para compilar:
cxfreeze ocr.py --include-files=chinese.jpg
Mas também pode usar setup.py bem simples.
You can test the patch in the latest development build (dev76):
pip install --force --no-cache --pre --extra-index-url https://marcelotduarte.github.io/packages/ cx_Freeze
Me informe se deu certo para vc.
Release 6.15.16 is out!
Erro: module 'abc' has no attribute 'file'
script:
setup teste:
comando setup: python .\a.py build
comando freeze: cxfreeze --target-name=teste --script=asd.py