Вложенные .pth файлы или загрузка дополнительных директорий сайта из сети - PullRequest
3 голосов
/ 06 июля 2011

Цель состоит в том, чтобы создать универсальный каталог, в который я мог бы добавлять в сеть пакеты, которые автоматически добавляются в sys.path без необходимости запуска site.addsitedir или sys.path.append каждый раз, когда я импортирую указанные пакеты.Есть ли способ сделать это?

Справочная информация: у меня небольшая сеть пользователей, которым всем нужен доступ к одним и тем же сценариям.Каждый раз, когда я хочу добавить новый пакет для использования, я добавляю путь к их переменной окружения PYTHONPATH.Пользовательская база начала расти, и поэтому количество пакетов увеличивается.

Если бы я мог настроить master.pth в сети, которая загружается при запуске любого из сценариев (без необходимости в дополнительном коде ввсе они), я был бы очень благодарен.Похоже, однако, что вы не можете вкладывать .pth файлы, поэтому простое добавление указателя .pth в каталог master.pth, похоже, не работает.

Редактировать: Относительно Комментариев от @ S.Lott (было немного большим для комментария): Возьмите, например, wxPython.В каталог site-packages помещаются три объекта: wxversion.py, каталог с именем wx-2.8-msw-unicode и файл .pth.Файл. pth указывает на этот каталог, в котором содержатся все импортируемые пакеты (wx, wxPython и т. Д.).В настоящее время у меня есть три других пакета, которые структурированы аналогичным образом, один из которых имеет несколько базовых модулей.Мне нужно было бы переместить все импортируемые модули в один и тот же каталог, чтобы получить желаемый результат.

Если, однако, файлы .pth могут быть "вложенными", я мог бы добавить все эти каталоги в master.pth, сохраняя относительно чистую папку.Я надеюсь, что это имеет смысл, и спасибо за вашу помощь!

1 Ответ

1 голос
/ 03 августа 2011

У вас есть пара вариантов:

  • измените файл site.py - найдите список PREFIXES и добавьте к нему сетевой путь:
  • Иметь один пользовательский файл .pth в папке site-packages каждой машины со следующей строкой:

    import sys; sys.path.append('/network/path/to/modules_and_packages')
    

Недостатком использования site.py является то, что при обновлении до другого питона вам нужно будет найти и настроить все site.py на всех машинах. Используя пользовательский файл .pth, его просто скопировать в новые папки «site-packages».

Оба решения позволяют настроить сетевое расположение точно так же, как и в обычной папке site-packages. Например:

m:\python_site_packages\   # network drive and folder
   |
   |- dbf.py  # for accessing dBase III and VFP .dbf files
   |
   |- web\
       |- __init__.py
       |- application.py
       |- (etc)

Просто напоминание - если сервер станет недоступным, то будут и все сетевые пакеты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...