Hello! I`m getting too tired with a weird problem :(
I need help because i already tried everything I had found in internet...

I`m building a python app to change the size of the VDI of a Virtual Box 
Machine.
The app works fine, its doing the job. But when I compile my app.py with: 
*python3 
-m PyInstaller --onefile --hidden-import=tkinter resizer_linux.py, *my app 
build inside dist folder well!

The problem is, when I double click it, won't open(It have executable 
permission! Its not broken!)
The weird thing is when i go to terminal in the /dist folder and type 
./resizer_linux.py it opens and works well, no problem with the modules 
imported!

I tried a lot of different things in my code, and it still not working in 
double click

Actually, my code is(I do not have a GUI): 
#!/usr/bin/env python3
import os
import sys
from pathlib import Path
clear = lambda: os.system('clear')

if sys.version_info[0] < 3:
    print("Por favor utilize a versao mais recente de python!")
    exit()
else:
    # Python3
    import tkinter as tk
    from tkinter import filedialog
    pass

def automatico_manual():
    clear()
    print("BEM VINDO!!  Por favor, leia os avisos!")
    print("\nAviso 1: Este aplicativo serve para alterar o tamanho total da 
sua maquina virtual, e esta versao é funcional apenas para: \n- Linux 
Debian ou Derivados\n- Imagem VDI")
    print("\nAviso 2: Apos alterar para um tamanho a maquina virtual, ela 
nao pode mais ser 'diminuida', por isso tenha cuidado!\n EX: Se voce 
colocar 100 GB na VM, depois nao conseguira colocar 50GB, os valores 
validos serao apenas >= 100\n")
    automatico_ou_manual = input("Voce quer selecionar manualmente o local 
da sua .vdi ou ela esta na pasta padrao de VMS?\n1 - Manualmente\n2 - 
Automatico(Padrao, deve ser usado de preferencia)\n\nSua escolha: ")
    if automatico_ou_manual == '1':
        clear()
        print("Entrando no modo manual....")
        root = tk.Tk()
        root.withdraw()
        print("Por favor, selecione o caminho onde esta sua .VDI do 
virtualbox")
        caminho_da_vdi = filedialog.askopenfilename()
        print("Caminho da VDI:", caminho_da_vdi)
        perguntas(caminho_da_vdi)
    else:
        prucura_pastas_virtualbox()

def prucura_pastas_virtualbox(): #Procura o diretorio do Virtual Box
    clear()
    print("Metodo automatico iniciado...")
    home = str(Path.home())
    caminho_pasta_virtualbox_linux = home + "/VirtualBox VMs/" #Caminho das 
VMS
    print("\nEstou navegando agora no diretorio: ", 
caminho_pasta_virtualbox_linux)
    print("Abaixo estao as pastas das suas maquinas virtuais, os nomes sao 
iguais aos que aparecem no aplicativo do Virtual Box: \n")
    dicionario_da_pasta = [] #Cria o dicionario
    i = 0  #Contador das pastas
    for pastas in os.listdir(caminho_pasta_virtualbox_linux):
        i += 1  #soma mais 1 ao contador
        pasta_com_barra = pastas + "/"
        dicionario_da_pasta.insert(i, pasta_com_barra)
        print(i, " - ", pastas)

    numero_da_vm = input("\nDigite o ID da VM que deseja alterar o 
tamanho\nEX: 3\nSua escolha: ")
    contador_de_vm_INT = int(numero_da_vm) - 1
    #dicionario_da_pasta[diretorio_da_vm] EH O NOME DA PASTA SELECIONADA
    diretorio_da_vm = caminho_pasta_virtualbox_linux + 
dicionario_da_pasta[contador_de_vm_INT] #algo semelhante a 
/home/mrminetoons/VirtualBox VMs/win7VM
    print(diretorio_da_vm)
    procura_vdi(diretorio_da_vm)

def procura_vdi(diretorio_da_vm): #Procura a .vdi dentro do diretorio do 
Virtual Box
    clear()
    os.chdir(diretorio_da_vm)
    for entry in os.listdir(diretorio_da_vm):  #Lista tudo dentro do 
diretorio
        if entry.endswith('.vdi'):       #Filtra apenas as .vdi do 
diretorio listado
            clear()
            print("Caminho escolhido: ", diretorio_da_vm)
            print("VDI Encontrada: ",entry)
            perguntas(entry)          #Chama o Questionario
        else:
            print("\nNao pude encontrar sua .vdi nesta pasta! Verifique se 
esta na pasta correta!")
    exit()

def perguntas(nome_da_vdi):        #Pergunta quantidade de GB que vai usar
    tamanho_da_vdi = input("\nAviso: O valor aqui se refere ao tamanho 
TOTAL da sua maquina virtual!\nDigite o tamanho da sua maquina virtual em 
GB\nEX: 100\nTamanho desejado: ")
    tamanho_vdi_GB = int(tamanho_da_vdi) * 1024
    resizer(nome_da_vdi, tamanho_vdi_GB, tamanho_da_vdi)

def resizer(nome_da_vdi, tamanho_vdi_GB, tamanho_da_vdi):   #Faz o trabalho 
de alterar o valor de GB da VDI
    clear()
    print("Nome da VM selecionada: ", nome_da_vdi)
    print("Novo Tamanho a ser alocado na VM:", tamanho_da_vdi, "GB")
    resposta = input("\nVoce tem certeza que deseja realizar esta 
operacao(S/N)?\n")
    if resposta.lower() == "s":
        print("\n")
        string_oq_fazer = 'VBoxManage modifyhd "{0}" --resize 
{1}'.format(nome_da_vdi, tamanho_vdi_GB)
        os.system(string_oq_fazer)
        print("\nCaso a mensagem acima seja uma porcentagem de 0% -> 100% 
significa que deu tudo certo!\nCaso contrario o Virtual Box retornou o erro 
acima! ")
        print("\nPorem voce ainda nao terminou! No seu windows, procure 
pela ferramente chamada 'Criar e Formatar Particoes do Disco 
Rigido'\nClique no disco C com o botao direito e selecione 'Estender 
Volume' entao clique em Avancar.\nPronto! :)")
        input("Finalizando... Pressione qualquer botao para sair...")
        exit()
    else:
        print("Voce cancelou a operacao, saindo...")
        exit()

if __name__ == "__main__":
    automatico_manual()
else:
    automatico_manual()

My Python Version: 3.8.6
PyInstaller Version: 4.0
Linux Distribution: Debian GNU/Linux bullseye/sid
GNOME VERSION: 3.38.1

Another weird thing is, if i open my code in Windows, it open with double 
click, normally! Just in linux I have this problem. 

Some one have any ideia? Maybe the problem is i`m doing totally wrong 
__name__ == "__main__"?

I appreciate any help!!! :D 

-- 
You received this message because you are subscribed to the Google Groups 
"PyInstaller" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pyinstaller/b32f59b4-51bc-4f7d-b351-a6a95901c6f7n%40googlegroups.com.

Reply via email to