[Trilinos-Users] [EXTERNAL] Cannot import PyTrilinos.NOX

Jonathan Guyer jonathan.guyer at nist.gov
Wed Jun 19 10:25:14 MDT 2013


I have SWIG 2.0.9. I'll try downgrading.

On Jun 19, 2013, at 10:50 AM, Bill Spotz <wfspotz at sandia.gov> wrote:

> Jonathan,
> 
> What version of SWIG are you using?  The latest, version 2.0.9, has this nested module import problem.  Version 2.0.8 works, as does the developers repository.
> 
> -Bill
> 
> On Jun 19, 2013, at 7:09 AM, Jonathan Guyer wrote:
> 
>> Attempting to run the PyTrilinos NOX example fails:
>> 
>> {{{
>> $ python exNOX_1Dfdm.py 
>> Traceback (most recent call last):
>> File "exNOX_1Dfdm.py", line 80, in <module>
>>   NOX       = fromPyTrilinosImport('NOX'      , options.testharness)
>> File "/Users/guyer/.virtualenvs/trilinos/build/trilinos-11.2.3-Source/TEST1/packages/PyTrilinos/example/testutil.py", line 86, in fromPyTrilinosImport
>>   PyTrilinosPkg = __import__(fullname, globals, locals)
>> File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyTrilinos/NOX/__init__.py", line 488, in <module>
>>   import NestedEpetra as Epetra
>> File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PyTrilinos/NOX/NestedEpetra/__init__.py", line 2777, in <module>
>>   class FiniteDifference(PyTrilinos.Epetra.RowMatrix,PyTrilinos.NOX.NestedEpetra.Interface.Jacobian,PyTrilinos.NOX.NestedEpetra.Interface.Preconditioner):
>> AttributeError: 'module' object has no attribute 'NOX'
>> }}}
>> 
>> The problem is a circular import because PyTrilinos/NOX/__init__.py does `import NestedEpetra as Epetra` 
>> and PyTrilinos/NOX/NestedEpetra/__init__.py does `import PyTrilinos.NOX.NestedEpetra.Interface`
>> but PyTrilinos.NOX isn't finished importing, yet, so the PyTrilinos package doesn't have a NOX module at this point.
>> 
>> PyTrilinos in 10.6.4 (before renaming PyTrilinos.NOX.Epetra to PyTrilinos.NOX.NestedEpetra) just did a relative `import Interface`. I know that relative imports are discouraged, but may be the only choice here.
>> 
>> Manually changing PyTrilinos.NOX.NestedEpetra.Interface to Interface througout PyTrilinos/NOX/NestedEpetra/__init__.py does resolve the problem and the example runs successfully, but I don't begin to understand the CMake `.i` witchcraft well enough to see where to patch the source code.
>> _______________________________________________
>> Trilinos-Users mailing list
>> Trilinos-Users at software.sandia.gov
>> http://software.sandia.gov/mailman/listinfo/trilinos-users
> 
> ** Bill Spotz                                              **
> ** Sandia National Laboratories  Voice: (505)845-0170      **
> ** P.O. Box 5800                 Fax:   (505)284-0154      **
> ** Albuquerque, NM 87185-0370    Email: wfspotz at sandia.gov **
> 
> 
> 
> 
> 
> 




More information about the Trilinos-Users mailing list