Для решения этой проблемы у вас есть несколько решений:
Создайте переменную окружения на каждой машине, и внутри скрипта сделайте что-то вроде этого:
import os
student_path = os.environ['STUDENT_PATH']
faculty_path = os.environ['FACULTY_PATH']
print(student_path, faculty_path)
Личное мнение: мне не нравится настраивать мои сценарии с использованием переменных среды, поскольку выбранные вами могут использоваться другим программным обеспечением + отладка всегда грязная
Использовать аргументы
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-s", "--student")
parser.add_argument("-f", "--faculty")
args = parser.parse_args()
student_path = args.student
faculty_path = args.faculty
print(student_path, faculty_path)
А затем назовите ваш сценарий вот так и адаптируйте эту строку в зависимости от машины
python <yourscript> -s <student_path> -f <faculty_path>
Личное мнение: я использую аргументы, когда хочу контролировать небольшое количество параметров в моих скриптах, чтобы изменить его поведение (многословно, nb процессора, ...).
Создайте файл конфигурации и используйте configparser
файл config.ini
[Paths]
student_path=<path_on_machine>
faculty_path=<path_on_machine>
Использование по сценарию:
import configparser
config = configparser.ConfigParser()
config.read('config.ini')
student_path = config.get('Paths', 'student_path')
faculty_path = config.get('Paths', 'faculty_path')
print(student_path, faculty_path)
А затем разверните различные config.ini
файлы на каждом компьютере (такие инструменты, как ansible могут помочь вам автоматизировать это)
Личное мнение: я использую файлы конфигурации, когда мне нужно адаптировать параметры при развертывании на новых машинах. Мне не нравится использовать аргументы для этой цели, так как я не хочу указывать одни и те же значения каждый раз, когда я использую свой скрипт (часто такие параметры не имеют хороших значений по умолчанию).
Создать модуль
Вы также можете создать модуль для хранения этих параметров вместо файла конфигурации.
my_config.py
student_path="<path_on_machine>"
faculty_path="<path_on_machine>"
А затем импортировать его
script.py
import my_config
print(my_config.student_path, my_config.faculty_path)
У меня нет личного мнения относительно файлов конфигурации и модулей конфигурации. Прочитайте это , если вы хотите, чтобы некоторые элементы сравнения.