From: Robert Kern on
Jeremiah H. Savage wrote:

> To use pymol and numpy together, I now do the following:
>
> To ~/.bashrc add:
> PYMOL_PATH=/usr/lib/pymodules/python2.5/pymol
> export PYMOL_PATH
>
> Then I can do the following in python:
>
> import numpy
> numpy.save('123',numpy.array([1,2,3]))
> numpy.load('123.npy')
> array([1, 2, 3])
> import sys
> sys.path.append( "/usr/lib/pymodules/python2.5/pymol")
> import pymol
> pymol.finish_launching()
> pymol.importing.load("/path/to/file.pdb")

No, do not do this. Add /usr/lib/pymodules/python2.5/ to your $PYTHONPATH, *not*
/usr/lib/pymodules/python2.5/pymol/. You will continue to run into problems if
you do it this way. You are not supposed to put the directory *of* the package
onto sys.path but rather the directory that *contains* the package directory.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

From: Dave Angel on


Robert Kern wrote:
> <div class="moz-text-flowed" style="font-family: -moz-fixed">Jeremiah
> H. Savage wrote:
>
>> To use pymol and numpy together, I now do the following:
>>
>> To ~/.bashrc add:
>> PYMOL_PATH=/usr/lib/pymodules/python2.5/pymol
>> export PYMOL_PATH
>>
>> Then I can do the following in python:
>>
>> import numpy
>> numpy.save('123',numpy.array([1,2,3]))
>> numpy.load('123.npy')
>> array([1, 2, 3])
>> import sys
>> sys.path.append( "/usr/lib/pymodules/python2.5/pymol")
>> import pymol
>> pymol.finish_launching()
>> pymol.importing.load("/path/to/file.pdb")
>
> No, do not do this. Add /usr/lib/pymodules/python2.5/ to your
> $PYTHONPATH, *not* /usr/lib/pymodules/python2.5/pymol/. You will
> continue to run into problems if you do it this way. You are not
> supposed to put the directory *of* the package onto sys.path but
> rather the directory that *contains* the package directory.
>
As I said before, I don't know pymol. But if that is the package name,
then Robert is certainly right. You need to read the docs on pymol to
see what they require. For example, it's surprising they require a
separate PYMOL_PATH environment variable, since they can find their own
directory path with the __file__ attribute of one of the modules.

Anyway, one more generic comment. Rather than having that directory in
both the bashrc file AND in your python source, I'd consider deriving
the latter from the environment variable, once you determine that it's
actually necessary. And of course you could strip the last node from
the path in the environment variable before appending it to sys.path, if
that's what's appropriate.

DaveA