55Any definitions made to the local file will take precedence over this file.
66"""
77
8+ import glob
89import os
910import string
1011import sys
@@ -308,8 +309,25 @@ def find_executable(env_name, executable_name='python'):
308309 os .path .join (home , 'anaconda3' , 'envs' , env_name , 'bin' , executable_name ),
309310 os .path .join (home , 'miniconda3' , 'envs' , env_name , 'bin' , executable_name ),
310311 os .path .join (home , '.conda' , 'envs' , env_name , 'bin' , executable_name ),
312+ os .path .join (home , 'micromamba' , 'envs' , env_name , 'bin' , executable_name ),
313+ os .path .join (home , '.micromamba' , 'envs' , env_name , 'bin' , executable_name ),
314+ os .path .join (home , '.local' , 'share' , 'mamba' , 'envs' , env_name , 'bin' , executable_name ),
311315 os .path .join ('/Local/ce_dana' , 'anaconda3' , 'envs' , env_name , 'bin' , executable_name ),
312316 ]
317+ mamba_root = os .getenv ('MAMBA_ROOT_PREFIX' )
318+ if mamba_root :
319+ candidate_paths .append (os .path .join (mamba_root , 'envs' , env_name , 'bin' , executable_name ))
320+ conda_prefix = os .getenv ('CONDA_PREFIX' )
321+ if conda_prefix :
322+ candidate_paths .append (os .path .join (os .path .dirname (conda_prefix ), 'envs' , env_name , 'bin' , executable_name ))
323+ conda_exe = os .getenv ('CONDA_EXE' )
324+ if conda_exe :
325+ conda_base = os .path .dirname (os .path .dirname (conda_exe ))
326+ candidate_paths .append (os .path .join (conda_base , 'envs' , env_name , 'bin' , executable_name ))
327+ conda_envs_path = os .getenv ('CONDA_ENVS_PATH' )
328+ if conda_envs_path :
329+ for path in conda_envs_path .split (os .pathsep ):
330+ candidate_paths .append (os .path .join (path , env_name , 'bin' , executable_name ))
313331 for path in candidate_paths :
314332 if os .path .isfile (path ):
315333 return path
@@ -320,14 +338,40 @@ def find_executable(env_name, executable_name='python'):
320338TS_GCN_PYTHON = find_executable ('ts_gcn' )
321339AUTOTST_PYTHON = find_executable ('tst_env' )
322340ARC_PYTHON = find_executable ('arc_env' )
341+ RMG_ENV_NAME = 'rmg_env'
323342RMG_PYTHON = find_executable ('rmg_env' )
324343XTB = find_executable ('xtb_env' , 'xtb' )
325344
326345# Set RMG_DB_PATH with fallback methods
327346rmg_db_candidates , rmg_candidates = list (), list ()
328347
348+
349+ def add_rmg_db_candidates (prefix : str ) -> None :
350+ """Add RMG-database candidates relative to a conda/mamba env prefix."""
351+ if not prefix :
352+ return
353+ rmg_db_candidates .extend ([
354+ os .path .join (prefix , 'share' , 'RMG-database' ),
355+ os .path .join (prefix , 'share' , 'rmg-database' ),
356+ os .path .join (prefix , 'share' , 'rmg' , 'database' ),
357+ os .path .join (prefix , 'share' , 'rmg_database' ),
358+ os .path .join (prefix , 'share' , 'RMG_database' ),
359+ os .path .join (prefix , 'share' , 'rmgdatabase' ),
360+ os .path .join (prefix , 'share' , 'RMGdatabase' ),
361+ ])
362+ rmg_db_candidates .extend (glob .glob (os .path .join (prefix , 'lib' , 'python*' , 'site-packages' , 'RMG-database' )))
363+ rmg_db_candidates .extend (glob .glob (os .path .join (prefix , 'lib' , 'python*' , 'site-packages' , 'rmg-database' )))
364+ rmg_db_candidates .extend (glob .glob (os .path .join (prefix , 'lib' , 'python*' , 'site-packages' , 'rmg_database' )))
365+ rmg_db_candidates .extend (glob .glob (os .path .join (prefix , 'lib' , 'python*' , 'site-packages' , 'RMG_database' )))
366+ rmg_db_candidates .extend (glob .glob (os .path .join (prefix , 'lib' , 'python*' , 'site-packages' , 'rmgdatabase' )))
367+ rmg_db_candidates .extend (glob .glob (os .path .join (prefix , 'lib' , 'python*' , 'site-packages' , 'RMGdatabase' )))
368+ for candidate in glob .glob (os .path .join (prefix , 'share' , '**' , 'recommended.py' ), recursive = True ):
369+ if candidate .endswith (os .path .join ('input' , 'kinetics' , 'families' , 'recommended.py' )):
370+ rmg_db_candidates .append (os .path .dirname (os .path .dirname (os .path .dirname (os .path .dirname (candidate )))))
371+
329372# Use exported RMG_PATH & RMG_DB_PATH if available
330- exported_rmg_path , exported_rmg_db_path = os .getenv ("RMG_PATH" ), os .getenv ("RMG_DB_PATH" )
373+ exported_rmg_path = os .getenv ("RMG_PATH" )
374+ exported_rmg_db_path = os .getenv ("RMG_DB_PATH" ) or os .getenv ("RMG_DATABASE" )
331375if exported_rmg_path :
332376 rmg_candidates .append (exported_rmg_path )
333377if exported_rmg_db_path :
@@ -339,7 +383,7 @@ def find_executable(env_name, executable_name='python'):
339383 rmg_db_candidates .append (os .path .join (gw , 'RMG-database' ))
340384
341385for python_path in sys .path :
342- if 'RMG-database' in python_path :
386+ if 'RMG-database' in python_path or 'rmgdatabase' in python_path or 'rmg_database' in python_path :
343387 rmg_db_candidates .append (python_path )
344388 if 'RMG-Py' in python_path :
345389 rmg_db_candidates .append (os .path .join (os .path .dirname (python_path ), 'RMG-database' ))
@@ -348,9 +392,23 @@ def find_executable(env_name, executable_name='python'):
348392 if 'RMG-Py' in p :
349393 rmg_candidates .append (p )
350394 rmg_db_candidates .append (os .path .join (os .path .dirname (p ), 'RMG-database' ))
351- if 'RMG-database' in p :
395+ if 'RMG-database' in p or 'rmgdatabase' in p or 'rmg_database' in p :
352396 rmg_db_candidates .append (p )
353397
398+ add_rmg_db_candidates (os .path .dirname (os .path .dirname (sys .executable )))
399+ if RMG_PYTHON :
400+ add_rmg_db_candidates (os .path .dirname (os .path .dirname (RMG_PYTHON )))
401+ if os .getenv ('MAMBA_ROOT_PREFIX' ):
402+ add_rmg_db_candidates (os .path .join (os .getenv ('MAMBA_ROOT_PREFIX' ), 'envs' , 'rmg_env' ))
403+ if os .getenv ('CONDA_PREFIX' ):
404+ add_rmg_db_candidates (os .path .join (os .path .dirname (os .getenv ('CONDA_PREFIX' )), 'envs' , 'rmg_env' ))
405+ if os .getenv ('CONDA_EXE' ):
406+ conda_base = os .path .dirname (os .path .dirname (os .getenv ('CONDA_EXE' )))
407+ add_rmg_db_candidates (os .path .join (conda_base , 'envs' , 'rmg_env' ))
408+ if os .getenv ('CONDA_ENVS_PATH' ):
409+ for path in os .getenv ('CONDA_ENVS_PATH' ).split (os .pathsep ):
410+ add_rmg_db_candidates (os .path .join (path , 'rmg_env' ))
411+
354412rmg_candidates .extend ([
355413 os .path .join (home , 'Code' , 'RMG-Py' ),
356414 os .path .join (home , 'runner' , 'work' , 'ARC' , 'ARC' , 'RMG-Py' )
0 commit comments