Manter o caminho no UnixAPI instalável

1

Estou desenvolvendo uma API no ambiente Unix para máquinas virtuais. A maioria dos módulos é desenvolvida em python. Eu tenho algumas perguntas sobre isso.

Dentro da API, estou usando um caminho absoluto como '/ root / virtman / manager /'. Considere executar esta API em qualquer ambiente unix, como posso fazer esse caminho absoluto genérico para qualquer sistema operacional / máquina. Ou devo ter que assumir algum local onde a API será instalada e fornecer esse caminho para todos os lugares?

Eu li muitos artigos, mas não obtive uma imagem clara, então qualquer sugestão / sugestão seria útil.

    
por Dany 01.11.2014 / 09:38

1 resposta

1

Se o caminho estiver apenas apontando para executáveis que você chama, considere a possibilidade de colocar links em locais padrão durante a instalação ( /usr/bin/ ou /usr/local/bin ) e fazer com que o executável descubra de onde eles foram invocados. caminho para qualquer arquivo de dados.

Você usaria o seguinte:

/usr/bin/myprog    
/opt/myprog/bin/myprog
/opt/myprog/data/picture_01.img

tem /usr/bin/myprog um link para /opt/myprog/bin/myprog e /opt/myprog/bin/ não deve estar no seu $PATH . Configure o link fazendo sudo ln -s /opt/myprog/bin/myprog /usr/bin e tenha em /opt/myprog/bin/myprog do:

import sys
import os

base_dir = os.path.realpath(sys.argv[0]).rsplit('/bin/', 1)[0]

Para determinar /opt/myprog dinamicamente em tempo de execução

Se a API python for baseada em algum módulo incluído, certifique-se de que o módulo seja instalado no caminho de pesquisa PYTHONPATH de um python do sistema, então você pode fazer import yourapimodule em um executável python e usá-lo.

Se esses arquivos de dados puderem ser instalados em qualquer lugar, considere ter um arquivo de configuração que você leu e que poderia ser ~/.config/yourapimodule/config.ini , ~/.yourapimodule/config.ini ou ~/.yourapimodule.ini .¹ (em vez de .ini , você poderia usar outros formatos como .json , o que você preferir).

¹ Plug sem vergonha: Se você estiver usando argparse do Python para lidar com argumentos de linha de comando, dê uma olhada no pacote ruamel.appconfig , que eu escrevi, configura a configuração para você e permite que você especifique padrões no arquivo de configuração para a análise da linha de comando.

    
por 01.11.2014 / 09:58