2014-02-08 4 views
1

Я использую модуль Python Theano на сервере. Он не установлен заранее, поэтому я установил его в своей домашней папке вместе с некоторыми другими модулями, которые не были на сервере. Я получаю следующую ошибку, когда я «импортирую theano» в IPython.Ошибка импорта модуля IPython:/usr/bin/ld: не удается найти -lpython2.7. collect2: ld вернулся 1 статус выхода

Problem occurred during compilation with the command line below: 
g++ -shared -g -march=core2 -mcx16 -msahf -maes -mpclmul -mpopcnt -msse4.2 --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=12288 -mtune=generic -D NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -D NPY_ARRAY_ENSURECOPY=NPY_ENSURECOPY -D NPY_ARRAY_ALIGNED=NPY_ALIGNED -D NPY_ARRAY_WRITEABLE=NPY_WRITEABLE -D NPY_ARRAY_UPDATE_ALL=NPY_UPDATE_ALL -D NPY_ARRAY_C_CONTIGUOUS=NPY_C_CONTIGUOUS -D NPY_ARRAY_F_CONTIGUOUS=NPY_F_CONTIGUOUS -m64 -fPIC -I/apps/libs/python/2.7.3/lib/python2.7/site-packages/numpy/core/include -I/home/ext_sxc/include/python2.7 -o /home/ext_sxc/.theano/compiledir_Linux-2.6.32-431.1.2.0.1.el6.x86_64-x86_64-with-centos-6.5-Final-x86_64-2.7.3-64/lazylinker_ext/lazylinker_ext.so /home/ext_sxc/.theano/compiledir_Linux-2.6.32-431.1.2.0.1.el6.x86_64-x86_64-with-centos-6.5-Final-x86_64-2.7.3-64/lazylinker_ext/mod.cpp -L/home/ext_sxc/lib -lpython2.7 
/usr/bin/ld: cannot find -lpython2.7 
collect2: ld returned 1 exit status 

--------------------------------------------------------------------------- 
Exception         Traceback (most recent call last) 
<ipython-input-1-3397704bd624> in <module>() 
----> 1 import theano 

/home/ext_sxc/lib/python2.7/site-packages/Theano-0.6.0-py2.7.egg/theano/__init__.pyc in <module>() 
    53  object2, utils 
    54 
---> 55 from theano.compile import \ 
    56  SymbolicInput, In, \ 
    57  SymbolicOutput, Out, \ 

/home/ext_sxc/lib/python2.7/site-packages/Theano-0.6.0-py2.7.egg/theano/compile/__init__.py in <module>() 
     4   ViewOp, view_op, register_view_op_c_code) 
     5 
----> 6 from theano.compile.function_module import * 
     7 
     8 from theano.compile.mode import * 

/home/ext_sxc/lib/python2.7/site-packages/Theano-0.6.0-py2.7.egg/theano/compile/function_module.py in <module>() 
    16 from theano import gof 
    17 from theano.gof.python25 import partial 
---> 18 import theano.compile.mode 
    19 from theano.compile.io import In, SymbolicInput, SymbolicInputKit, SymbolicOutput 
    20 from theano.compile.ops import deep_copy_op, view_op 

/home/ext_sxc/lib/python2.7/site-packages/Theano-0.6.0-py2.7.egg/theano/compile/mode.py in <module>() 
     9 import theano 
    10 from theano import gof 
---> 11 import theano.gof.vm 
    12 from theano.configparser import config, AddConfigVar, StrParam 
    13 from theano.compile.ops import register_view_op_c_code, _output_guard 

/home/ext_sxc/lib/python2.7/site-packages/Theano-0.6.0-py2.7.egg/theano/gof/vm.py in <module>() 
    514 
    515 try: 
--> 516  import lazylinker_c 
    517 
    518  class CVM(lazylinker_c.CLazyLinker, VM): 

/home/ext_sxc/lib/python2.7/site-packages/Theano-0.6.0-py2.7.egg/theano/gof/lazylinker_c.py in <module>() 
    84    args = cmodule.GCC_compiler.compile_args() 
    85    cmodule.GCC_compiler.compile_str(dirname, code, location=loc, 
---> 86            preargs=args) 
    87    # Save version into the __init__.py file. 
    88    init_py = os.path.join(loc, '__init__.py') 

/home/ext_sxc/lib/python2.7/site-packages/Theano-0.6.0-py2.7.egg/theano/gof/cmodule.pyc in compile_str(module_name, src_code, location, include_dirs, lib_dirs, libs, preargs, py_module) 
    1969    # difficult to read. 
    1970    raise Exception('Compilation failed (return status=%s): %s' % 
-> 1971        (status, compile_stderr.replace('\n', '. '))) 
    1972   elif config.cmodule.compilation_warning and compile_stderr: 
    1973    # Print errors just below the command line. 

Exception: Compilation failed (return status=1): /usr/bin/ld: cannot find -lpython2.7. collect2: ld returned 1 exit status. 

Как исправить вышеуказанную ошибку?

Другое дело в том, что всякий раз, когда я бегу на работу Python на сервере, я сначала сделать

$ module load libs/python/2.7.3 

перед выполнением моего Python скрипт, и сервер имеет libpython2.6.so в папку/USR/lib64. Я думаю, что это связано с проблемой.

ответ

0

Ваша установка на python неполна. Когда вы это сделаете:

module load libs/python/2.7.3 

информация добавляется к вашим переменным среды, чтобы вы использовали python 2.7.3. Но эта версия не включает заголовок разработки python (Theano нуждается в этом). Или это не соответствует правильному пути в вашей среде.

Для отладки этого запустите это до и после запуска «модуль загрузки LIBS/Python/2.7.3», чтобы сравнить то, что модуль нагрузки делает:

env &> BEFORE.txt 
module load libs/python/2.7.3 
env &> AFTER.txt 
diff BEFORE.txt AFTER.txt 

Затем проверьте пути добавлен в переменных ENV и посмотреть в этих каталогах. Он должен был изменить переменную LD_LIBRARY_PATH, но она должна была сделать такую ​​же модификацию для LIBRARY_PATH. Если это не так, сделайте эту модификацию самостоятельно и сообщите об этом администратору системы.

Это позволит решить вашу проблему.

В противном случае используйте python 2.6 из ОС, возможно, включить версию разработки.

В противном случае проверьте, доступны ли другие модули python через модуль.

Наконец, обратитесь к системному администратору, чтобы добавить развитие и общую версию питона или установить его самостоятельно:

wget -c http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz 
tar -jxf Python-2.7.6.tar.bz2 
cd Python-2.7.6 
./configure --prefix=~/python2.7.6 --enable-shared 
make 
make install 
+0

Я бы не рекомендовал устанавливать питон из источника, не пытаясь найти родной пакет первой –

+0

я согласен, но это был не вопрос. Я ответил на вопрос, как установить другой питон, когда он уже существует. Иногда это необходимо. – nouiz

+0

Строительство из источника - это почти всегда плохая идея в современной системе. –

Смежные вопросы