Використання змінних з одного сценарію Python в інших сценаріїв Python?


9

Я хочу створити єдиний файл python, що містить змінні, які мають розташування всіх моїх джерел даних. Потім це буде використано всі інші мої сценарії, тоді як джерело даних змінюється, мені потрібно редагувати лише один файл.

Мій Data_sources.py виглядатиме приблизно так:

BC_BEC = "Database Connections\\BC.sde\\FOREST_BC.BC_Eco\\BC.BC_BEC"
BC_TFL = "Database Connections\\Forest_BC.sde\\BC.BC_Admin\\BC.TFL_Boundary"

і так далі...

Як змусити всі інші сценарії завантажити або отримати доступ до цих змінних у Data_sources.py?


Питання на кшталт цього, які є чистішим Python, а не про модуль Python або сайт-пакет для ГІС, як правило, слід досліджувати / задавати у Stack Overflow .
PolyGeo

Відповіді:


10

Ви можете створити встановлений модуль Python, який є важливим для кожного запущеного сценарію Python, використовуючи Distutils для його упаковки.

Від доктора Python:

Якщо все, що ви хочете зробити, це розподілити модуль під назвою foo, що міститься у файлі foo.py, то ваш сценарій налаштування може бути таким же простим, як це:

from distutils.core import setup
setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

Потім ви можете встановити його через

python.exe setup.py install

І тоді ви можете імпортувати foo з будь-якого сценарію Python, або можете використовувати

python.exe setup.py bdist_wininst

Щоб створити інсталятор Windows для модуля, щоб ви могли поширити його на інші комп'ютери.


в книзі "Байт Python" є приємна глава, де показані приклади побудови за допомогою модулів імпортування англ.
Jonatr

Мені подобається ця пропозиція про створення модуля, але я не дуже знаю їх. Команда "python.exe setup.py install" буде використовувати вказівник на foo.py, або він буде використовувати те, що зараз знаходиться у foo.py? Якщо пізніше я зміню foo.py, модуль все ще буде актуальним? Дякую.
Помилка користувача

Я також шукаю цю книгу. Дякуємо за допомогу Джейсону та Джонатару.
Помилка користувача

Корекція словника: більш точне слово python - це "package" - корисне для пошуку документації, і щоб було зрозуміло, що пакети та модулі - це дві різні речі в світі python. Крім того, пропозиція / підказка: якщо ви зробите setup.py develop(замість цього install), зміни до пакета будуть вибиратися, як тільки вони будуть збережені, без необхідності перевстановлення. (Це, мабуть, підходить для оригіналу data_sources.py запитувача.)
Dan S.

3
Чи не просто користувач запитує, як імпортувати? Відповідь на це нижче.
sgillies

12

У будь-який сценарій того ж каталогу, що і Data_sources.py, поставте

from Data_sources import BC_BEC, BC_TFL

на вершині. Це працює, тому що робочий каталог завжди знаходиться на чолі шляху python, якщо ви його не змінили.

>>> import sys
>>> sys.path[0] == ''
True

Дивіться також: http://diveintopython.org/getting_to_know_python/everything_is_an_object.html#d0e4550

Якщо ви хочете ділитися даними ширше, ви можете їх упакувати так, як пропонували інші.


8

Створіть текстовий конфігураційний файл та прочитайте його за допомогою програми ConfigParser Python .

Трохи приємніші приклади, ніж офіційна документація на веб-сайті http://effbot.org/librarybook/configparser.htm


@usererror - пакет хороший для розповсюдження коду, але він насправді не вирішує питання збереження ваших параметрів в одному місці.
geographika
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.