Управление конфигурациями для использования скриптов на разных компьютерах

У меня есть скрипты Python для запуска на разных компьютерах. Чтобы избежать проблем с разными путями и именами файлов, я создал определенные файлы конфигурации (DConfig, AConfig и MConfig) и еще один сценарий, который решает, какую конфигурацию использовать. Это работает, но я думаю, есть способы сделать это лучше. Любые идеи?

import os
import socket

hostname_K = 'DESKTOP-K'
hostname_A = 'A'
hostname_M = ''                    # hostname not known for sure

print("start config")
print("cwd: ", os.getcwd())
print("os: ", os.name)
# print(os.getlogin())                # Doesn't work on non-posix

hostname = socket.gethostname()
if hostname == hostname_K:
    import DConfig as Conf
elif hostname == hostname_A:
    import AConfig as Conf
else:
    print("Hostname: {}, guess we are on M".format(hostname))
    import MConfig as Conf

dirData = Conf.dirData
dirScript = Conf.dirScript
pathDB = Conf.pathDB

print("config done.")

Как это используется другими скриптами:

import config
XMLFILE = config.dirData + 'Tags.xml'
DATABASE = config.pathDB

1 ответ
1

У вас есть ценность (hostname в данном случае), который вы хотите использовать для выбора среди различных вариантов данных (в данном случае — модули конфигурации). В подобных ситуациях используйте структуру данных. Разумные данные всегда проще логики. Например, см. Правило 5. от Роба Пайка.

Иллюстрация, основанная на вашем коде:

import socket
import DConfig
import AConfig
import MConfig

configs = {
    'host-D': DConfig,
    'host-A': AConfig,
    'host-M': MConfig,
}

hostname = socket.gethostname()
Conf = configs.get(hostname, MConfig)

  • Спасибо, выглядит намного лучше!

    — klmr

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *