Meu programa Python depende de alguns módulos que não são instalados junto com o Python. E agora?

Olá. Eu sou um iniciante no Python, e agora me surgiu uma dúvida bem peculiar. Meu programa Python depende de alguns módulos que não são instalados junto com o Python. Cada usuário que for usa-lo vai ter que baixar cada módulo individualmente ou é possível manda-los junto com o .py?

1 curtida

Nao é tao peculiar sua dúvida, é muito comum na verdade.

Também tenho pouca experiência em python e essa parte sempre me confundiu também.

Já vi empresas onde há um processo para transformar sua app num pacote debian, por exemplo e você instala pelo gerenciador de pacote do linux, como qualquer outra app.

Tem esse artigo (em ingles) que sugere um modelo de distribuiçao de forma simples: https://www.digitalocean.com/community/tutorials/how-to-package-and-distribute-python-applications

2 curtidas

Olá. Muito obrigado por responder. Eu entendi o modelo do link, inclusive vi em outros programas isso. Mas aí me surge outra dúvida. Não existe Maven no Python?

1 curtida

O “Maven” do python é justamente o pip como te falei em outros tópicos… a diferença entre ele e o maven, é que no maven vale por projeto, já o pip vale pro ambiente todo, ou seja, módulos globais…

Uma alternativa é usar o virtualenv + pip

Assim você consegue criar ambientes para teste/desenvolvimento sem afetar os módulos globais…

1 curtida

Ele instala os módulos somente na pasta do projeto Python?

1 curtida

Não jovem… reforçando…

“a diferença entre ele e o maven, é que no maven vale por projeto, já o pip vale pro ambiente todo, ou seja, módulos globais…”

O comportamento que você consegue parecido seria reforçando novamente…

"Uma alternativa é usar o virtualenv + pip

Assim você consegue criar ambientes para teste/desenvolvimento sem afetar os módulos globais…"

2 curtidas

Tipo temporários?

1 curtida

Não exatamente, o projeto fica o tempo que você quiser, a diferença é que o virtualenv “simula um maven” pegou?

O python funciona assim, existe os módulos padrão certo? Também são os módulos globais e são acessados de qualquer ponto do sistema e ficam em um lugar especifico, por exemplo em /usr/lib/python3 …

Quando se usa o virtualenv, ao invés de instalar cada módulo no global (comportamento default), ele instala um “global” dentro do projeto, pegou?

Pesquisa sobre ele, você vai gostar…

O virtualenv apenas simula um ambiente entendeu? Ele não instala os módulos pra você, isso você precisa usar o pip de qualquer forma, a diferença é que os módulos vão para outro lugar…

3 curtidas

Que bacana. Valeu pela dica.

2 curtidas

@Thallysson completando o raciocínio do amigo @LostSoldier que foi bem legal sobre virtualenv existe um recurso que geralmente usamos com o virtualenv que é a criação de um arquivo chamado requirements.txt, é um arquivo de texto que criamos e deixamos nele todos os módulos que não vem instalados com o Python e precisam ser instalados ao baixar o projeto. Com isso toda vez que alguém baixar o projeto irá criar o virtualenv e mandar o Pip instalar os módulos que estão dentro do requirements.txt e ele fará isso com sucesso. Imagine um programa com 10 módulos externos ou mais, seria cansativo instalar 1 a 1, com esse recurso você apenas com um comando faz a instalação de tudo. Olhe esse link para melhor entendimento. http://jtemporal.com/requirements-txt/
Espero que meu raciocínio complemente e ajude você com seus estudos amigo. Um abraço.

4 curtidas

Essa solução do requirements é bastante utilizada. Ontem encontrei vários codigos no github com este danado .txt e nao estava entendendo, lá pelo décimo entendi pq todos tinham o “mesmo” .txt.
Inclusive acho que alguns script .py traziam o comando para instalar os requerimentos contidos txt atraves de link do github.

1 curtida