Внешний файл конфигурации, который все еще позволяет изменениям после компиляции pyinstaller, чтобы exe? - PullRequest
0 голосов
/ 04 июня 2019

Я все еще учусь и пытаюсь понять, как все это работает .... Я создал скрипт, и в нем есть некоторые настраиваемые пользователем вещи, которые хранятся в отдельном файле config.py.

когда я запускаю скрипт, он импортирует переменные из этого config.py файла.если я скомпилирую его с помощью pyinstaller, то он больше не будет искать его внешне, поэтому мой конечный пользователь должен иметь возможность обновлять конфигурацию на лету, чтобы изменить то, что определенные переменные

делают для сортировки и организации некоторых данных, поэтомуу одного пользователя может быть

variable1 = ('data1','data2','data3')

другому пользователю может потребоваться добавить data4 или удалить data2 из этого списка, чтобы настроить его в соответствии с его задачей

как мне сделатьчтобы после того, как основная часть сценария была скомпилирована, у меня все еще может быть редактируемый файл конфигурации, который конечный пользователь может изменять переменные

-редактировано, чтобы показать, что я уже делал

Это текущий конфигурационный файл, который я использую ... он называется SortingConfig.py, и я обращаюсь к нему в основном скрипте с этой строкой в ​​начале файла

из импорта SortingConfig *

####   Fill in your Details Below

####   Format within each set of () should look as Follows
####   ('Item 1' , 'Item 2' , 'Item 3')
####   Words that use an ' in the name such as L'Acoustics
####   Need to be Formatted as ('L\'Acoustics)
####   Using the Product Code instead of the Product Description 
####   can solve alot of problems created by Product Descriptions with an ' in them


#L1 Category to Keep
l1cat=('Audio Terminal', 'Communications/Telephone', 'Microphones', 'Speakers')


#Category to Remove
cat=('Audio Snakes', 'Speaker Accessories', 'Mic Accessories', 'W Coupler Cables')

#If Item appears in L1 / Category / Product Code / Product Description, Color it
#Formatting = (['Item1', 'Item2', 'Item3'])


#Color 1
color01=('00FCC84E')
cat1=(['Speakers','Atlas Mic Stands'])

#Color 2
color02=('00ABFF6B')
cat2=(['Audio Mixers/Console'])

#Color 3
color03=('00FF0000')
cat3=(['None'])

#Color 4
color04=('0000FFFF')
cat4=(['None2'])

#Color 5
color05=('0000FF00')
cat5=(['None3'])

1 Ответ

0 голосов
/ 04 июня 2019

Вы, безусловно, можете иметь настраиваемый файл конфигурации для каждого пользователя. Вам нужно будет установить его в определенном месте, которое может найти и программа, и пользователь. Обычно для этого установлено что-то вроде (в Windows) %USERPROFILE%\.myprogname\config.json. (Я пишу это, предполагая, что вы используете файл json для своей конфигурации, хотя любой тип файла работает.)

В вашей программе вы можете проверить, существует ли файл, и если да, то использовать его. В противном случае используйте значения по умолчанию, которые вы упаковали вместе с исполняемым файлом.

import os
import json

user_config = os.environ.get('USERPROFILE') + '\\.myprognam\\config.json'

if os.path.exists(user_config) and os.path.isfile(user_config):
    config_path = user_config
else:
    config_path = 'path/to/default_config.json'

with open(config_path) as fp:
    config = json.load(fp)
...