It doesn't seem to be LD_LIBRARY_PATH. I tried setting it with export,
and also putting it in the /etc/environment file.
There are two _epics.so files that 'locate' brings up, one in
/usr/lib/python2.5/site-packages and one in
/usr/local/EpicsFA2.1.5/biuld/lib.linux-x86_64-2.5. When I call 'ldd'
on them, both say that libca.so and libCom.so are "not found". The
other files they're linked to come up with hex addresses. I can't
just stick "/usr/local/lib/epics/base/lib/linux-x86_64/libca.so" in
there, so how do I link those in?
"When you built it, there should have been a gcc line that includes
something like -lca and -lCom... try using the direct path to libca
and libCom, i.e.,
/usr/local/lib/epics/base/lib/linux-x86_64/libca.so. It's the gcc line
that build _epics.so, I believe."
I remember seeing -lca and -lCom come up when I was installing the
epics base. Should I dig around the epics base files and try to find
that line? I'm not sure where in there to look...
-Adam
On Wed, Aug 6, 2008 at 1:50 PM, John Hammonds <[email protected]
<mailto:[email protected]>> wrote:
This should be LD_LIBRARY_PATH. You were able to find epicsCA
which is the Python part of things. libca is the epics library
which does not have anything to do with Python.
Also, for what it is worth, I have also been working to update
Geoff Savage's CaPython. This does not provide quite as slick an
interface as Matt's but it is a pretty full implementation of the
Channel Access Libraries. I have most of this working using a
newer version of SWIG and python. I have not yet added the 3.14
CA calls but it can do things like deal with larger arrays. I am
trying to coordinate with Geoff before releasing this.
John
Tim Mooney wrote:
Adam, The first thing I'd try is setting either the
LD_LIBRARY_PATH,
or the PYTHONPATH, environment variable to the directory
containing the
needed .so file. E.g.:
setenv LD_LIBRARY_PATH /usr/local/lib/epics/base/lib/linux-x86_64
or, if you're using bash,
export LD_LIBRARY_PATH=/usr/local/lib/epics/base/lib/linux-x86_64
Adam Kadzban wrote:
Hey all, I'm a relative newcomer to both Linux, Python,
and Epics, so sorry if this has an easy solution. I guess
I'm not even sure if it's a problem with Epics itself, or
Python, or something else. I'm having some problems
getting Python to import the EpicsCA module. I'm running
Ubuntu 8.04 (Hardy), and it's an x86_64 system. The epics
base seems to have installed fine, I put it in
/usr/local/lib/epics/base. I got the epics module here
<http://cars9.uchicago.edu/%7Enewville/Epics/Python/>
(http://cars9.uchicago.edu/~newville/Epics/Python/
<http://cars9.uchicago.edu/%7Enewville/Epics/Python/>),
and again it looked like it installed fine to
/usr/local/EpicsCA-2.1.5.
The problem is, whenever I try to do anything with EpicsCA
in Python, it dies on me because it can't find libca.so.
Here's what it shows when I try to import EpicsCA:
>>> import EpicsCA
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File
"/usr/lib/python2.5/site-packages/EpicsCA/__init__.py",
line 116, in <module>
import _epics
ImportError: libca.so: cannot open shared object file: No
such file or directory
(it does the same if I try "from EpicsCA import *")
However, I know libca.so exists, it's here:
adam:$ locate libca.so
/usr/local/lib/epics/base/lib/linux-x86_64/libca.so
/usr/local/lib/epics/base/lib/linux-x86_64/libca.so.3.14
/usr/local/lib/epics/base/src/ca/O.linux-x86_64/libca.so.3.14
So there it is, in the epics base folder. Why can't
Python find it? I was digging around online, and found
how to add places for Python looks for modules to import
them (though I don't think that's the problem, because it
can't find libca.so, not a module), and I added a bunch of
places, to no avail. Anyone have any ideas?
Not sure if it's relevant, but when I ran the setup.py
script to install EpicsCA, I had to edit the environment
variable manually. I added
"EPICS_BASE=/usr/local/lib/epics/base" to
/etc/environment, but for some reason
os.environ['EPICS_BASE'] wasn't finding
/usr/local/lib/epics/base. I had to change the setup
script to look there. Though if I opened a Python
interpreter and printed os.environ['EPICS_BASE'], it came
out as /usr/local/lib/epics/base. So something fishy was
going on there, not sure if it's related though.
Thanks,
Adam Kadzban
--
John Hammonds
Beamline and Data Acquisition Group
APS Engineering Support Division
Argonne National Laboratory
[email protected] <mailto:[email protected]>
<mailto:[email protected] <mailto:[email protected]>>
(630)252-5317