Hi,
I'm trying to run PyRosetta on the lab's cluster:
CentOS release 5.2 (Final)
Linux version 2.6.18-92.el5 (mockbuild@builder10.centos.org) (gcc version 4.1.2 20071124 (Red Hat 4.1.2-42))
The architecture is x86_64.
I get this error when trying to import libraries for both PyRosetta Scientific Linux, and Ubuntu (Both 64bit distributions) (Version 2
Python 2.6.4 (r264:75706, Dec 10 2009, 10:49:23)
Type "copyright", "credits" or "license" for more information.
IPython 0.10 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: from rosetta import *
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/common/PyRosetta/Program/PyRosetta-r40251.linux.64Bit/ in ()
/common/PyRosetta/Program/PyRosetta-r40251.linux.64Bit/rosetta/__init__.py in ()
9
10 # double-checked right order...
---> 11 import utility
12 import utility.excn
13
/common/PyRosetta/Program/PyRosetta-r40251.linux.64Bit/rosetta/utility/__init__.py in ()
----> 1 from __utility_all_at_once_ import *
ImportError: rosetta/utility/__utility_all_at_once_.so: wrong ELF class: ELFCLASS64
Using the 32-bit Ubuntu distribution I get this Error:
ImportError: rosetta/libboost_python.so.1.42.0: undefined symbol: PyUnicodeUCS4_AsUTF8String
Python2.5 is installed.
Replacing libboost_python.so.1.42.0 in /rosetta with the one from the forum (http://www.rosettacommons.org/node/2307), creates this error:
libboost_python.so.1.42.0: undefined symbol: PyUnicodeUCS4_FromEncodedObject
Is there a newer libbost I should try before asking the admin to rebuild python? Should I try building PyRosetta from source?
-J
The first error (ImportError: rosetta/utility/__utility_all_at_once_.so: wrong ELF class: ELFCLASS64) is basically telling you that trying to run 32bit code on 64bit OS - that obviously would not work. Could it be that headnode of your cluster running the in 64Bit mode but working nodes are 32bit? Try to run 'echo $HOSTTYPE' on that machine and see what you will get.
The OS is 64bit, the PyRosetta build is 64 bit. Working nodes are 64 bit as well….
What about the Python, could it be that build of that Python is 32bit? Because otherwise error 'wrong ELF class: ELFCLASS64' does not make any sense...
Python build is 64bit; both 2.5 and 2.6.4. Makes no sense at all....everything is 64bit! The last thing that we built on it was MPI NAMD, also 64bit....
Could you please post output of 'python -v'?
Thanks for the help Sergey.
[jadolfbr@hpccluster ~]$ python -V
Python 2.5.6
After some digging around, it looks like the error was due to pointing of python to a 32bit build through a local bashrc. So, that error is gone.
However, now I get this:
Python 2.5.6 (r256:88840, Jun 16 2011, 08:26:50)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from rosetta import *
>>> rosetta.init()
Found minirosetta_database at /common/madsci/PyRosetta/Program/PyRosetta-r40251.linux.64Bit/minirosetta_database, using it...
Traceback (most recent call last):
File "", line 1, in
File "/common/madsci/PyRosetta/Program/PyRosetta-r40251.linux.64Bit/rosetta/__init__.py", line 523, in init
v.extend(args)
File "/common/madsci/PyRosetta/Program/PyRosetta-r40251.linux.64Bit/rosetta/__init__.py", line 105, in extendfunc
for i in othervec: vec.append(i)
Boost.Python.ArgumentError: Python argument types in
vector1_string.append(vector1_string, str)
did not match C++ signature:
append(utility::vector1 > {lvalue}, std::string)
So it was 32bit - great, it make sense now!
Now, on your last error: You trying to run it with Python 2.5.* - right? - That will not work because it builded for Python 2.6. You can try either build Python 2.6 on that platform or rebuild PyRosetta for Python 2.5.