При попытке использовать «Outils personnalisation» > «Admin» > «Show Project Plan HTML» в PT9.0 в Wasta-Linux я получил ошибку. Оказалось, что Python-скрипт пытается использовать реестр Windows для поиска папки проектов Paratext. Обратите внимание на третью строку, «from _winreg import…» (из cms/ProjectPlanImport.py):
def settingsDirectory():
# Find the directory with Paratext 8 projects using the windows registry
from _winreg import OpenKey, EnumValue, HKEY_LOCAL_MACHINE
strPath = r"SOFTWARE\WOW6432Node\Paratext\8"
try:
aKey = OpenKey(HKEY_LOCAL_MACHINE, strPath)
for i in [0,1,2,3,4,5]:
aName, aValue, irrelevant = EnumValue(aKey,i)
if aName == 'Settings_Directory':
return aValue + '\\'
return None
except WindowsError:
# The registry key was not found
return None
except:
raise
Однако эту же папку можно найти относительно, используя модуль os.path. Поэтому я обновил функцию на своей системе следующим образом:
def settingsDirectory():
# Find the directory with Paratext 8 projects using Python 2 tools.
cms_dir = os.path.dirname(os.path.realpath(__file__))
if os.path.basename(cms_dir) == 'cms' and os.path.isdir(cms_dir):
return os.path.dirname(cms_dir)
else:
return None
Поэтому, я думаю, мой вопрос таков: возможно ли, что при нестандартной установке папка cms может находиться где-то вне папки проектов Paratext, что потребует проверки реестра в Windows? Или, если нет, не мог бы кто-нибудь рассмотреть возможность обновления скриптов ProjectPlanImport.py и ProjectPlanRoot.py, чтобы использовать встроенные инструменты и сделать скрипты более универсально совместимыми?
Я также готов разработать способ выполнения проверки ОС и обработки поиска settingsDirectory в зависимости от ОС, если смогу обсудить это с нужным человеком. Кстати, кажется, эти два места — единственные, где модуль _winreg упоминается в скриптах cms.