Поддерживать путь в устанавливаемом UnixAPI

Я разрабатываю API в среде Unix для виртуальных машин. Большинство модулей разработаны в python. У меня к этому мало вопросов.

Внутри API я использую абсолютный путь, например '/ root / virtman / manager /'. Попробуйте запустить этот API в любой среде unix, как я могу сделать этот абсолютный путь общим для любой ОС / машины. Или мне нужно принять какое-то место, где API будет установлен и дать этот путь повсюду?

Я прочитал много статей, но я не получил четкой картины, поэтому любые подсказки / предложения были бы полезными.

One Solution collect form web for “Поддерживать путь в устанавливаемом UnixAPI”

Если путь указывает только на исполняемые вами вызовы, вы должны рассмотреть возможность размещения ссылок в стандартных местах во время установки ( /usr/bin/ или /usr/local/bin ) и иметь исполняемый файл, чтобы узнать, откуда они были вызваны, и затем использовать их вывести путь к любым файлам данных из этого.

Вы должны использовать следующее:

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

have /usr/bin/myprog – ссылка на /opt/myprog/bin/myprog и /opt/myprog/bin/ не должна быть в вашей $PATH . Настройте ссылку, выполнив sudo ln -s /opt/myprog/bin/myprog /usr/bin и /opt/myprog/bin/myprog :

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

Чтобы определить /opt/myprog динамически во время выполнения


Если API-интерфейс python основан на некотором включенном модуле, убедитесь, что модуль установлен в пути поиска PYTHONPATH системного python, тогда вы можете просто import yourapimodule в исполняемый файл python и использовать его.


Если это файлы данных, которые можно установить где угодно, подумайте о том, что вы читаете файл конфигурации, который может быть ~/.config/yourapimodule/config.ini , ~/.yourapimodule/config.ini или ~/.yourapimodule.ini . ¹ (Вместо .ini вы можете использовать другие форматы, такие как .json , независимо от того, что вы предпочитаете).

¹ Бесстыдный штекер: если вы используете аргумент Python для обработки аргументов командной строки, посмотрите на пакет ruamel.appconfig , который я написал, он ruamel.appconfig для вас конфигурацию и позволяет указать значения по умолчанию в файле конфигурации для синтаксического анализа командной строки ,

  • Не найдена команда 'foo', даже если 'foo' intsalled
  • Есть ли такое понятие, как расширение, где искать поиски?
  • Как правильно установить пакеты Python?
  • Выровнять шестнадцатеричный текстовый файл по 9 байт каждой строки
  • Как скомпилировать Python 3.2 на NetBSD? Код ошибки 127
  • Пакеты Linux - Отдельные внешние библиотеки Python из системы
  • туннель в скрипте python с выполнением команды python
  • Что означает эта ошибка python2 и что мне делать с этим?
  • Как включить скрипт python внутри сценария bash
  • как использовать gpg зашифрованные файлы oauth через Python для offlineimap
  • Centos 7.1.1503 больше не имеет некоторых статических библиотек, которые предполагают пакеты python
  • Interesting Posts

    Использовать SSD для кэширования файлов с жесткого диска

    Может кто-нибудь объяснить мне, как это делает grep?

    Как я могу установить команду `ll` в Mac OS X?

    сервер osx, клиент Windows, запуск emacs открывает его на сервере, а не на клиенте

    Mate терминал меняет прозрачность фона программно?

    системный таймер каждые 2 часа через 30 минут после часа?

    Ограничить пользователя от просмотра файлов, которыми он не владеет.

    Отображать и редактировать строки, соответствующие конкретному шаблону в vi

    В чем разница между * и *. * При копировании?

    скрипт, выполняющийся в crontab, не выдающий вывод на экран оболочки

    Странный файл с невозможным именем в моем домашнем каталоге

    Как заставить startx открывать новую сессию X в tty7 на малине Pi?

    IPv6 через TCP или TCP6

    CentOS 7 linux-прошивка – как его урезать?

    PuTTY (SSH) (tracert) Ошибка сети: программное обеспечение вызвало прерывание соединения

    Linux и Unix - лучшая ОС в мире.