Поддерживать путь в устанавливаемом 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 для вас конфигурацию и позволяет указать значения по умолчанию в файле конфигурации для синтаксического анализа командной строки ,

  • Python.h: Нет такого файла или каталога
  • fail2ban log parsing слишком медленный на малины Pi - варианты?
  • Запуск облачной печати Google при загрузке
  • Могу ли я выполнять скрипт перед каждым входом
  • Выполняется скрипт Python во время блокировки экрана
  • обновить Python до 2.7.2
  • Как я могу использовать переменные среды в моем shebang?
  • AttributeError: объект 'module' не имеет атрибута 'INotifyWrapper'
  • Операторы печати в реальном времени с тройником в интерактивном скрипте
  • Как установить библиотеку pylzma python в Linux?
  • Почему мой скрипт python не изменяет umask?
  • Linux и Unix - лучшая ОС в мире.