Encontrei um erro ao tentar usar “Outils personnalisation” > “Admin” > “Show Project Plan HTML” no PT9.0 no Wasta-Linux. Descobri que o script Python tenta usar o Registro do Windows para localizar a pasta de Projetos do Paratext. Observe a 3ª linha, “from _winreg import…” (de 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
No entanto, essa mesma pasta pode ser encontrada de forma relativa usando o módulo os.path. Então, atualizei a função no meu sistema para a seguinte:
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
Portanto, acho que minha pergunta é: é possível que, em uma instalação não padrão, a pasta cms possa estar localizada em algum lugar diferente da pasta de Projetos do Paratext, o que tornaria necessário a verificação no Registro no Windows? Ou, se não for o caso, alguém consideraria atualizar os scripts ProjectPlanImport.py e ProjectPlanRoot.py para usar as ferramentas embutidas, tornando os scripts mais compatíveis universalmente?
Também estaria disposto a encontrar uma maneira de fazer uma verificação do SO e lidar com a localização da settingsDirectory de uma forma dependente do SO, se pudesse discutir isso com a pessoa certa. A propósito, parecem ser esses os únicos dois lugares em que o módulo _winreg é referenciado nos scripts cms.