ThundeRatz / travesim

Gazebo simulation environment for IEEE Very Small Size Soccer robots
MIT License
29 stars 0 forks source link

Dependências do script do dongle #1

Closed LucasHaug closed 3 years ago

LucasHaug commented 4 years ago

Sobre isso: https://github.com/ThundeRatz/vss_simulation/blob/8db4829085f2700ca1255c4610759212b4e25ed2/scripts/usb_dongle.py#L14

Tava conversando com o @d-nery e aí ele falou algumas coisas sobre as dependências do script. Bom, primeiro seria necessário instalar python3-venv. Então seria necessário criar um ambiente virtual pra rodar o script, estando no diretório que está o script, fazendo:

python3 - m venv venv

O segundo venv, é o nome da pasta onde tudo do ambiente será guardado, ela tem que ir pro .gitignore.

Então é necessário "ativar" o ambiente virtual com:

source venv/bin/activate

Se estiver usando fish tem que usar o activate.fish.

Dá primeira vez é necessário instalar todos as dependências na mão com o pip, por exemplo:

pip install numpy

Isso vai instalar as dependências no seu ambiente virtual.

Fazendo pip freeze no terminal, você consegue ver as dependências do seu script. Então é possível guardar isso em um arquivo, por exemplo requirements.txt, esse arquivo tem que ir pro GitHub. Com esse arquivo é possível instalar facilmente todas as dependências com:

pip install -r requirements.txt

Para desativar o ambiente virtual é só fazer deactivate no terminal.

A vantagem de fazer isso é que se facilita a instalação de dependências do script e também mantém um registro de qual versão de cada dependência se está utilizando no projeto, isso é bom também porque se tiver uma atualização não compatível das dependências se sabe qual a versão que é compatível.

FelipeGdM commented 4 years ago

Gosto da ideia de colocar as dependências em um venv, fica mt mais fácil de saber o que o projeto precisa pra funcionar e faz parte do manual de boas práticas do python.

Não sei no geral como o ROS se comporta rodando a partir de um venv, não se venv continua sendo uma boa ideia rodando por baixo do ROS, vou persquisar a respeito. Vou ver tb se existe um jeito de fazer o rosdep puxar o requirements.txt pra já resolver todas as dependências com um comando só.

Uma ressalva pro script do jeito que ele está, eu ainda tenho que organizar as dependências desse script, pq eu copiei e colei descaradamente do repo do nRFDongle, o script pra simulação não precisa de tudo que tá aí (eu tava me perguntando pq cargas dágua tô usando numpy nessa brincadeira, a primeira coisa que eu faço num projeto python é colocar import numpy as np).

Vou levantar todas as infos necessárias.
No mais, acho que essa é uma boa ideia, #partiu implementar

FelipeGdM commented 4 years ago

Um último parêntesis que me esqueci no primeiro post

Se estiver usando fish tem que usar o activate.fish.

Pra rodar essas coisas no fish, costumo usar o bass

LucasHaug commented 4 years ago

Ahh eh que o activate.fish já existe ali, aí nem precisa do bass.

LucasHaug commented 4 years ago

Eu não sabia das coisas que eu falei ali do venv, por isso fiz um resuminho dos passos, aí coloquei isso em um post (basicamente a mesma coisa que falei ali em cima), se alguém tiver alguma coisa pra completar por favor fala lá.