Где поместить файл конфигурации для скомпилированного скрипта Python? - PullRequest
3 голосов
/ 19 марта 2012

Это похоже на Где поместить файл конфигурации в Python? , но я спрашиваю о скриптах, скомпилированных / замороженных с py2exe или аналогичных в системах Windows.(А именно: Какой формат файла конфигурации использовать для удобных для пользователя строк произвольных байтов? https://gist.github.com/1119561)

Моей первой мыслью было поместить файл конфигурации в ту же папку, что и.exe, что делает его своего рода автономным. Но если я свяжу файлы с .exe, он будет вызываться из их каталога, а не из его собственного, поэтому мне нужно что-то вроде Как мне получитьпуть к текущему исполняемому файлу в Python? для поиска файла конфигурации.

Это лучший способ? Или есть какие-то стандартные местоположения файла конфигурации для поиска, например https://stackoverflow.com/a/7567946/125507?

Ответы [ 4 ]

5 голосов
/ 19 марта 2012

Вы можете использовать модуль appdirs , чтобы определить соответствующую папку для пользовательских данных.

2 голосов
/ 19 марта 2012

Если это конфигурационный файл, который должен редактировать пользователь, поместите его в какое-то очевидное место.Я склонен «компилировать» приложения Python в структуру каталогов, например:

C:/path/to/Application
| config.ini
| Run Application.bat  (runs code/application.exe)
| code/
  | application.exe
  | library.zip 
  | ... etc. 

Это позволяет сохранить ярлык «Запустить приложение» и файл конфигурации в одном месте, чтобы их было легко найти пользователю.

1 голос
/ 19 марта 2012

Если вы используете py2exe для упаковки своего скрипта, то, следуя вашим ссылкам на ту, которая описывает, как определить путь к исполняемому файлу , похоже, будет правильным путем.Где вы решите сохранить свой конфигурационный файл относительно исполняемого файла, зависит от вас.Вы можете разместить его в корне каталога приложения (рядом с exe-файлом) или создать подкаталог config.Это твой выбор.

На компьютерах с Linux иногда можно использовать расположение etc/ для файлов конфигурации.OSX, вы можете использовать расположение предпочтений plist пользователей или и т. Д. Но опять же, на любой из этих платформ вы также можете использовать относительный файл conf в каталоге приложений.

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

0 голосов
/ 19 марта 2012

Я создал «скомпилированные» исполняемые файлы в python для widnows, с которыми связаны типы файлов, и у меня никогда не было проблем с открытием моего конфигурационного файла, который был расположен в том же месте, что и .exe.Я использовал что-то вроде этого, чтобы найти его:

    conf = open(r"%s\settings.conf" % os.getcwd())

Я сохранил свои значения, разделенные символом новой строки, поэтому файл выглядел так:

PNelson
21
6'

Здесь хранится имя пользователя, возрасти height, чтобы прочитать значения, я бы использовал что-то вроде этого:

settings = "\n".split(conf.read())

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

...