Автоматическая загрузка последней версии файла при импорте - PullRequest
1 голос
/ 10 марта 2009

У меня есть модуль, который я хочу обновлять, и мне интересно, если это плохая идея:

иметь модуль (mod1.py) в каталог сайтов-пакетов, который копирует отличается модуль от некоторых других расположение в сайт-пакеты каталог, а затем импортирует * из этот модуль.

import shutil
from distutils.sysconfig import get_python_lib
p_source = r'\\SourceSafeServer\mod1_current.py'
p_local = get_python_lib() + r'\mod1_current.py'
shutil.copyfile(p_source, p_local)
from mod1_current import *

Теперь я могу сделать это в любом модуле, и это всегда будет самая последняя версия:

from mod1 import function1

Это работает .... но есть ли лучший способ сделать это?

Обновление

Вот текущий процесс ... есть проект под управлением исходного кода с одним модулем: mod1.py Также есть setup.py Запуск setup.py копий mod1.py в каталог site-packages.

Разработчики, использующие модуль, должны запустить setup.py для обновления модуля. Иногда этого не происходит, и отсутствие последней версии вызывает проблемы.

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

Ответы [ 3 ]

2 голосов
/ 10 марта 2009

Вы действительно хотите это сделать? Это означает, что вы можете очень легко перенести код в производственное приложение, просто перейдя на контроль исходного кода. Я бы посчитал это неприятным побочным эффектом для тех, кто не знает о ваших настройках.

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

1 голос
/ 11 марта 2009

В некоторых случаях мы помещаем .pth файлы в каталог сайтов-пакетов Python. Файлы .pth называют наши различные каталоги проверки SVN.

Нет установки. Нет копии.

.pth файлов описаны здесь .

0 голосов
/ 11 марта 2009

Первоначальная стратегия, заключающаяся в том, чтобы другие разработчики копировали mod1.py в свои пакеты сайтов, чтобы использовать модуль, звучит так, как будто это настоящая проблема. Почему они просто не используют один и тот же элемент управления исходным кодом?

Это автоматическое копирование затруднит откат, особенно если другие разработчики копируют вашу стратегию. Представьте себе эту же систему, используемую для десятков и десятков файлов. А потом представьте, что вы на самом деле делаете хотите использовать версию mod1.py, которая не является чем-то новым.

...