[Trilinos-Users] [EXTERNAL] PyTrilinos, library location info missing

Roberts, Nathan V. nvroberts at alcf.anl.gov
Thu Jan 8 13:52:45 MST 2015


Hi Bill,

Thanks for your quick, informative reply.  I am indeed running on a Mac.  I tried your first test:

>  $ cd <Trilinos-build-dir>/packages/PyTrilinos/src
>  $ mpirun -np 1 python -e "from PyTrilinos import Epetra"


and, after I installed mpi4py using pip, this ran successfully.  Now that I have also set the DYLD_LIBRARY_PATH to include <Trilinos-install-dir>/lib, running from elsewhere also works.

I did find the pytrilinos-users group by doing a Google search for the same, and found that I could subscribe from:

https://software.sandia.gov/mailman/listinfo/pytrilinos-users

Thanks again,

Nate

On Jan 8, 2015, at 1:00 PM, Bill Spotz <wfspotz at sandia.gov> wrote:

> Hi Nate,
> 
> As far as running interactively on one processor, I have had luck with OpenMPI.  I am also working with Enthought so that in the future, you can run ipython interactively and control an engine of multiple processors with distributed PyTrilinos objects.
> 
> As a first test, you can try this in the build directory:
> 
>  $ cd <Trilinos-build-dir>/packages/PyTrilinos/src
>  $ mpirun -np 1 python -e "from PyTrilinos import Epetra"
> 
> (With OpenMPI, "mpirun -np 1" is unnecessary, and I can run python interactively.)  You could also do
> 
>  $ cd <Trilinos-build-dir>/packages/PyTrilinos
>  $ ctest
> 
> and see how the PyTrilinos tests progress.  If this works, then you know it is a problem associated with where you have installed the dynamic libraries.  It is true that the *.py,*.pyc and _*.so files generated by PyTrilinos are going to be installed in your <Trilinos-install-dir>/lib/python2.7/site-packages directory, but the Trilinos lib*.dylib files (including libpytrilinos.dylib, I think) are going to be installed elsewhere.
> 
> Since your home directory is /Users/nroberts, it LOOKS to me like you are on a Mac, in which case you need to set DYLD_LIBRARY_PATH instead of LD_LIBRARY_PATH to find dynamic libraries.
> 
> The mailing lists still exist.
> 
> -Bill
> 
> On Jan 8, 2015, at 10:33 AM, Roberts, Nathan V. <nvroberts at alcf.anl.gov> wrote:
> 
>> Hi all,
>> 
>> I'm just getting started with PyTrilinos.  I do have Trilinos building with PyTrilinos, and I have put a line in my .bashrc like:
>> 
>>     export PYTHONPATH=$PYTHONPATH:<Trilinos-install-dir>/lib/python2.7/site-packages
>> 
>> I see in the User's Guide that since I built Trilinos with MPI, I shouldn't try to run in interactive mode (is that still true?), so I made a one-line script, pyTrilinosTest.py, that simply says:
>> 
>> from PyTrilinos import Epetra
>> 
>> I then run:
>> 
>> mpirun -np 1 python pyTrilinosTest.py
>> 
>> and get the following error:
>> 
>> Traceback (most recent call last):
>>  File "/Users/nroberts/Desktop/pyTrilinosTest.py", line 1, in <module>
>>    from PyTrilinos import Epetra
>>  File "/Users/nroberts/lib/trilinos/mpi-release-shared/lib/python2.7/site-packages/PyTrilinos/Epetra.py", line 80, in <module>
>>    _Epetra = swig_import_helper()
>>  File "/Users/nroberts/lib/trilinos/mpi-release-shared/lib/python2.7/site-packages/PyTrilinos/Epetra.py", line 76, in swig_import_helper
>>    _mod = imp.load_module('_Epetra', fp, pathname, description)
>> ImportError: dlopen(/Users/nroberts/lib/trilinos/mpi-release-shared/lib/python2.7/site-packages/PyTrilinos/_Epetra.so, 258): Library not loaded: libpytrilinos.11.dylib
>>  Referenced from: /Users/nroberts/lib/trilinos/mpi-release-shared/lib/python2.7/site-packages/PyTrilinos/_Epetra.so
>>  Reason: image not found
>> 
>> I have set LD_LIBRARY_PATH to include the directory that includes libpytrilinos.11.dylib.  Examining _Epetra.so with otool, I found that all the Trilinos libraries are listed without any path info.  I can resolve this manually by doing something like:
>> 
>> install_name_tool -change libpytrilinos.11.dylib /Users/nroberts/lib/trilinos/mpi-release-shared/lib/libpytrilinos.11.dylib /Users/nroberts/lib/trilinos/mpi-release-shared/lib/python2.7/site-packages/PyTrilinos/_Epetra.so
>> 
>> for each .so file and each library.  However, it seems likely that either there's something wrong with the way I built PyTrilinos, or that I'm missing something in the way I'm attempting to invoke it.  Is LD_LIBRARY_PATH the appropriate environment variable to set so that Python will find the referenced libraries?  Is there a way to build PyTrilinos so that the .so files include complete paths to the Trilinos libraries?
>> 
>> Thanks very much for any suggestions.
>> 
>> Regards,
>> Nate
>> 
>> P.S. In the PyTrilinos User's Guide, there's reference made to several PyTrilinos mailing lists.  However, I do not see these under https://software.sandia.gov/mailman/listinfo.  Do they still exist?
>> _______________________________________________
>> Trilinos-Users mailing list
>> Trilinos-Users at software.sandia.gov
>> https://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 **
> 
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> https://software.sandia.gov/mailman/listinfo/trilinos-users



More information about the Trilinos-Users mailing list