【问题标题】:Error importing Theano导入 Theano 时出错
【发布时间】:2014-01-24 21:36:38
【问题描述】:

将python、numpy、scipy和theano安装到~/.local后,我尝试导入theano,但报错:

>>> import theano
Problem occurred during compilation with the command line below:
g++ -shared -g -march=core2 -mcx16 -msahf --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=4096 -mtune=core2 -D NPY_NO_DEPRECATED_API=NPY_1_7_API_VERSION -D NPY_ARRAY_ENSUREARRAY=NPY_ENSUREARRAY -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/opt/python/lib/python2.7/site-packages/numpy/core/include -I/home/minh.lengoc/.local/include/python2.7 -o /home/minh.lengoc/.theano/compiledir_Linux-2.6.32-279.14.1.el6.x86_64-x86_64-with-centos-6.3-Final-x86_64-2.7.6-64/lazylinker_ext/lazylinker_ext.so /home/minh.lengoc/.theano/compiledir_Linux-2.6.32-279.14.1.el6.x86_64-x86_64-with-centos-6.3-Final-x86_64-2.7.6-64/lazylinker_ext/mod.cpp -L/home/minh.lengoc/.local/lib -lpython2.7
/usr/bin/ld: /home/minh.lengoc/.local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/home/minh.lengoc/.local/lib/libpython2.7.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/minh.lengoc/setup/Theano/theano/__init__.py", line 55, in <module>
    from theano.compile import \
  File "/home/minh.lengoc/setup/Theano/theano/compile/__init__.py", line 6, in <module>
    from theano.compile.function_module import *
  File "/home/minh.lengoc/setup/Theano/theano/compile/function_module.py", line 18, in <module>
    import theano.compile.mode
  File "/home/minh.lengoc/setup/Theano/theano/compile/mode.py", line 11, in <module>
    import theano.gof.vm
  File "/home/minh.lengoc/setup/Theano/theano/gof/vm.py", line 516, in <module>
    import lazylinker_c
  File "/home/minh.lengoc/setup/Theano/theano/gof/lazylinker_c.py", line 86, in <module>
    preargs=args)
  File "/home/minh.lengoc/setup/Theano/theano/gof/cmodule.py", line 1975, in compile_str
    (status, compile_stderr.replace('\n', '. ')))
Exception: Compilation failed (return status=1): /usr/bin/ld: /home/minh.lengoc/.local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC. /home/minh.lengoc/.local/lib/libpython2.7.a: could not read symbols: Bad value. collect2: ld returned 1 exit status. 

我在 Red Hat 盒子上安装:

$ cat /proc/version
Linux version 2.6.32-279.14.1.el6.x86_64 (mockbuild@c6b8.bsys.dev.centos.org) (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Tue Nov 6 23:43:09 UTC 2012

我该怎么办...?

【问题讨论】:

    标签: python theano


    【解决方案1】:

    您没有正确构建 python。它不是使用 -fPIC 参数编译的。看看如何用共享库编译python。

    编辑: 你需要像这样编译python:

    ./configure --enable-shared
    make
    make install
    

    【讨论】:

    • 谢谢!我还需要运行export LD_LIBRARY_PATH=/home/minh.lengoc/.local/lib:$LD_LIBRARY_PATH 才能使其工作。
    • @ngọcminh.oss:您的 lib 目录中有什么,您需要将其添加到 LD_LIBRARY_PATH 中吗?
    • 没关系,在这里找到答案:stackoverflow.com/questions/7880454/…
    【解决方案2】:

    如果你使用pyenv,你可以这样做

    CONFIGURE_OPTS=--enable-shared pyenv install 3.6.5
    

    【讨论】:

      【解决方案3】:

      我在 Ubuntu 16.04 上使用了 virtualenv,在使用 pyenv install 3.6.1 安装 python 之前,我运行了以下命令以确保使用 fPIC 标志构建 python:

      export CONFIGURE_OPTS="OPT=\"-fPIC\""
      

      然后我就可以正确安装和运行theano了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-05
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 2016-11-26
        • 2018-08-15
        • 1970-01-01
        相关资源
        最近更新 更多