Obtuve un error al intentar usar “Outils personnalisation” > “Admin” > “Show Project Plan HTML” en PT9.0 en Wasta-Linux. Resulta que el script de python intenta usar el Registro de Windows para encontrar la carpeta de proyectos de Paratext. Fíjense en la línea 3, “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
Sin embargo, esta misma carpeta se puede encontrar de manera relativa usando el módulo os.path. Así que actualicé la función en mi sistema de la siguiente manera:
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
Así que supongo que mi pregunta es: ¿Es posible que en una instalación no estándar la carpeta cms pueda estar ubicada en algún otro lugar que no sea dentro de la carpeta de proyectos de Paratext, lo cual haría necesaria la verificación del registro en Windows? O, si no, ¿consideraría alguien actualizar los scripts ProjectPlanImport.py y ProjectPlanRoot.py para usar las herramientas integradas y hacer que los scripts sean más compatibles universalmente?
También estaría dispuesto a encontrar una forma de realizar una verificación del sistema operativo y manejar el hallazgo de settingsDirectory de una manera dependiente del sistema operativo si pudiera discutir esto con la persona adecuada. Por cierto, estos parecen ser los únicos dos lugares donde el módulo _winreg se referencia en los scripts de cms.
I got an error trying to use “Outils personnalisation” > “Admin” > “Show Project Plan HTML” on PT9.0 in Wasta-Linux. It turns out the python script attempts to use the Windows Registry to find the Paratext Projects folder. Note the 3rd line, “from _winreg import…” (from 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
However, this same folder can be found in a relative fashion using the os.path module. So I updated the function on my system to the following:
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
So I guess my question is: Is it possible that in a non-standard install the cms folder could be located somewhere other than within the Paratext Projects folder, which would necessitate the registry check in Windows? Or, if not, would someone consider updating the ProjectPlanImport.py and ProjectPlanRoot.py scripts to use the built-in tools to make the scripts more universally compatible?
I’d also be willing to work out a way to do an OS check and handle finding the settingsDirectory in an OS-dependent way if I could discuss this with the right person. By the way, these seem to be the only two places that the _winreg module is referenced in the cms scripts.
Traducción automática desde English