E3SM-Project / E3SM

Energy Exascale Earth System Model source code. NOTE: use "maint" branches for your work. Head of master is not validated.
https://docs.e3sm.org/E3SM
Other
355 stars 368 forks source link

siac buildnml and python 3.7.6 #4391

Closed rljacob closed 3 years ago

rljacob commented 3 years ago

While doing some hand testing on anvil, I loaded python 3.7.6 with: module load anaconda3/2020.02

then tried to create a simple F-case: --compset FC5AV1C-L --res ne4_ne4 and got an error curing case.setup:

   Running /gpfs/fs1/home/jacob/E3SM2/components/stub_comps/siac/cime_config/buildnml 
/usr/bin/env: python3: No such file or directory
ERROR: /gpfs/fs1/home/jacob/E3SM2/components/stub_comps/siac/cime_config/buildnml /gpfs/fs1/home/jacob/E3SM2/cime/scripts/Fcasekok FAILED, see above
Exit 1

Turns out siac buildnml only had this code:

#!/usr/bin/env python3

"""
build stub model namelist
"""
# DO NOTHING

while the other stub model's buildnml's had:

#!/usr/bin/env python3

"""
build stub model namelist
"""
# DO NOTHING
#pylint: disable=unused-argument
def buildnml(case, caseroot, compname):
    pass

BUT: python 3.8.3, also available on anvil, did NOT have any error with the incomplete buildnml.

Why doesn't anyone else see this on another platfrom? All cases run the siac buildnml.

jgfouca commented 3 years ago

@rljacob , ah, I think I see the problem. Python isn't complaining about the script, it's complaining that there's no python3 in your PATH. It seems like that particular python installation was not done correctly.

rljacob commented 3 years ago

But wouldn't all the other buildnml's give an error then? And so would create_newcase ?

rljacob commented 3 years ago

Here is the full output of case.setup:

[jacob@blueslogin4 Fcasekok]$ ./case.setup
Machine/Decomp/Pes configuration has already been done ...skipping
If an old case build already exists, might want to run 'case.build --clean' before building
Generating component namelists as part of setup
  2021-07-08 16:42:57 atm 
Create namelist for component eam
   Calling /gpfs/fs1/home/jacob/E3SM2/components/eam//cime_config/buildnml
  2021-07-08 16:42:58 lnd 
Create namelist for component elm
   Calling /gpfs/fs1/home/jacob/E3SM2/components/elm//cime_config/buildnml
  2021-07-08 16:42:58 ice 
Create namelist for component cice
   Calling /gpfs/fs1/home/jacob/E3SM2/components/cice/cime_config/buildnml
  2021-07-08 16:42:59 ocn 
Create namelist for component docn
   Calling /gpfs/fs1/home/jacob/E3SM2/components/data_comps/docn/cime_config/buildnml
  2021-07-08 16:42:59 rof 
Create namelist for component srof
   Calling /gpfs/fs1/home/jacob/E3SM2/components/stub_comps/srof/cime_config/buildnml
  2021-07-08 16:42:59 glc 
Create namelist for component sglc
   Calling /gpfs/fs1/home/jacob/E3SM2/components/stub_comps/sglc/cime_config/buildnml
  2021-07-08 16:42:59 wav 
Create namelist for component swav
   Calling /gpfs/fs1/home/jacob/E3SM2/components/stub_comps/swav/cime_config/buildnml
  2021-07-08 16:42:59 iac 
Create namelist for component siac
   Running /gpfs/fs1/home/jacob/E3SM2/components/stub_comps/siac/cime_config/buildnml 
/usr/bin/env: python3: No such file or directory
ERROR: /gpfs/fs1/home/jacob/E3SM2/components/stub_comps/siac/cime_config/buildnml /gpfs/fs1/home/jacob/E3SM2/cime/scripts/Fcasekok FAILED, see above
Exit 1
jgfouca commented 3 years ago

@rljacob , CIME is finding a buildnml function in those other files, so it's calling them as a python library. It failed to find one in siac's, so attempted to invoke as a shell command which then failed. If create_newcase is finding python3, then there must be something in the environment setup in config_machines.xml for anvil that is removing python.

rljacob commented 3 years ago

When adding that anaconda module, it says:

[jacob@blueslogin4 cime_config]$ which python
/soft/anaconda3/2020.02/bin/python
[jacob@blueslogin4 cime_config]$ python  --version
Python 3.7.6

Maybe it is particular to how that python is configured on anvil but I should still fix that discrepancy in the siac buildnml.

jgfouca commented 3 years ago

@rljacob , all CIME python scripts are now explicitly looking for an executable called python3

rljacob commented 3 years ago

Ok. I'll open a separate issue for this python3.7.6 module on anvil. It has problems.

rljacob commented 3 years ago

Will continue in #4392