De um modo geral, como são estruturados os projetos (Python)?

Estou um pouco perdido quando se trata de estruturar meus projetos. Tento estruturar as coisas de maneira que faça sentido, mas sempre acabo reestruturando a coisa toda pelo menos duas vezes por dia. É verdade que meus projetos não são muito grandes, mas eu adoraria não ter que reestruturar tudo e me contentar com algo pela primeira vez.

Descreverei meu programa atual para tentar entender as coisas. É um programa gráfico com um banco de dados para calcular o preço das velas. Nem tudo está escrito ainda, mas o usuário poderá selecionar uma categoria e um modelo de vela em dois menus suspensos. Dependendo da combinação de categoria e modelo, o programa apresentará caixas de seleção e caixas de seleção. Essas caixas de seleção e caixas de seleção, quando alteradas, extraem informações de um banco de dados e apresentam o preço de ter essa caixa de seleção marcada ou ter um determinado número (por exemplo, área em metros quadrados) na caixa de seleção.

Na sua forma atual, o projeto se parece com o seguinte:

COPYING
README.md
SailQt.pyw                    (Should program be called from here ...)
sailqt/
    __init__.py               (This holds a __version__ string)
    SailQt.pyw                (... or here?)
    gui/
        __init__.py
        MainWindow.py         (This needs access to a __version__ string)
        MainWindow_rc.py
        OptionsWidget.py
        ui_MainWindow.py
        ui_OptionsWidget.py
    resources/
        __init__.py
        database.db
        generate_gui.py
        MainWindow.ui
        MainWindow.qrc
        OptionsWidget.ui
        icons/
            logo.png

Para esclarecer melhor.resources segura tudo.ui arquivos criados no Qt Designer. Eles são arquivos XML que descrevem a GUI. Eles podem ser convertidos em scripts Python com uma ferramenta de terminal, na qual eu integreigenerate_gui.py. O mesmo vale para.qrc arquivos.generate_gui.py coloca os arquivos gerados automaticamente nogui pasta com qualquer prefixoui_ ou sufixo_rc. database.db está vazio no momento, mas eventualmente será usado para manter preços e tudo.

MainWindow.py eOptionsWidget.py são arquivos Python que contêm objetos com o mesmo nome, menos o.py sufixo.MainWindow detémOptionsWidget em sua superfície de exibição. Ambos os objetos usam seus correspondentesui erc arquivos.

SailQt.pyw é o arquivo que faz umMainWindow instância, diz para mostrar-se e, em seguida, diz (Py) Qt para inserir seu loop e assumir o controle a partir daí. É basicamente como um.exe arquivo de muitas aplicações gráficas, pois é um arquivo pequeno que faz o programa rodar.

Meu palpite inicial era colocarSailQt.pyw dentro desailqt pasta. Mas entãoMainWindow.py de repente precisava de acesso a um__version__ corda. A única maneira de descobrir como conseguir isso era me mudarSailQt.pyw para a pasta raiz do meu projeto e deixarMainWindow.py importarsailqt.__version__. Mas, considerando que foi a enésima vez que tive que embaralhar as coisas e refazer as linhas na maioria dos arquivos para explicar esse pequeno embaralhamento, decidi apenas perguntar aqui.

Minhas perguntas são bastante claras:

Como, em geral, os projetos Python são estruturados?Esse link pydoc foi útil, mas isso me parece mais um módulo do que algo que é realmente executado por um usuário.Eu consegui a estrutura acima, certo?Pontos de bônus por responder a isso, pois é um pouco fora de tópico. Como é que eu posso fazerimport os e depois faça coisas comoos.system("sudo rm -rf /"), mas não posso fazer coisas comoimport sailqt e então façasailqt.gui.generate_gui.generate()?

questionAnswers(1)

yourAnswerToTheQuestion