Arquivos PyInstaller + UI - FileNotFoundError: [Erro 2] Nenhum arquivo ou diretório:
Estou tentando exportar meu script .py para .exe usando o PyInstaller, que tem dependências em arquivos .ui que foram criados usando o Qt Designer.
Posso confirmar que meu script .py funciona bem ao executá-lo no PyCharm - consigo ver a GUI que criei com os arquivos .ui.
No entanto, quando exporto meu script .py para .exe e o inicio, recebo os seguintes erros na linha de comando:
C:\Users\giranm>"C:\Users\giranm\PycharmProjects\PyQt Tutorial\dist\secSearch_demo.exe"
Traceback (most recent call last):
File "secSearch_demo.py", line 13, in <module>
File "site-packages\PyQt4\uic\__init__.py", line 208, in loadUiType
File "site-packages\PyQt4\uic\Compiler\compiler.py", line 140, in compileUi
File "site-packages\PyQt4\uic\uiparser.py", line 974, in parse
File "xml\etree\ElementTree.py", line 1186, in parse
File "xml\etree\ElementTree.py", line 587, in parse
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\giranm\\securitySearchForm.ui'
Failed to execute script secSearch_demo
Por algum motivo, o arquivo .exe está procurando o arquivo .ui no caminho - C: \ Users \ giranm \ No entanto, já tendo feito alguma pesquisa, me disseram que eu precisava usar os.getcwd () e garantir que eu tivesse o caminho completo no meu script. Mesmo com o código abaixo, ainda recebo erros ao tentar localizar os arquivos .ui.
PyInstaller: IOError: [Erro 2] Nenhum arquivo ou diretório:
# import relevant modules etc...
cwd = os.getcwd()
securitySearchForm = os.path.join(cwd, "securitySearchForm.ui")
popboxForm = os.path.join(cwd, "popbox.ui")
Ui_MainWindow, QtBaseClass = uic.loadUiType(securitySearchForm)
Ui_PopBox, QtSubClass = uic.loadUiType(popboxForm)
# remainder of code below.
Existe alguma maneira de corrigir isso para que eu possa criar um .exe independente?
Eu sou bastante novo no uso do PyQT4 e PyInstaller - qualquer ajuda seria muito apreciada!
Depois de coçar a cabeça durante todo o fim de semana e analisar melhor o SO, consegui compilar o .exe independente conforme o esperado, usando os arquivos da interface do usuário.