CentOS-6.x系統基於python-3.5安裝tensorflow-1.4
阿新 • • 發佈:2018-05-29
tensorflow安裝簡介
tensorflow的安裝分cpu版本和gpu版本, 這裏只討論cpu版本。 google提供了很多種安裝方式, 主要分三種, 一種是pip安裝,非常簡單,重要的是它在各個平臺都是可以用的,包括windows,但是CentOS6需升級glibc和gcc(CXXABI_)版本 第二種是通過docker安裝,也差不多是一鍵安裝,內核版本低於3.10不能安裝docker,具體的介紹可以看https://github.com/tensorflow/tensorflow/tree/master/tensorflow/tools/docker 最後一種,就是源碼編譯安裝,最麻煩。 Linux系統官方推薦安裝在ubuntu-14及以上 本文采用pip安裝
編譯安裝python3.5(tensorflow要求python版本至少是2.7或者3.3)
Linux下默認系統自帶python2.6的版本,這個版本被系統很多程序所依賴,所以不建議刪除,
如果使用最新的Python3那麽我們知道編譯安裝源碼包和系統默認包之間是沒有任何影響的,所以可以安裝python3和python2共存
1.1 安裝編譯工具
$ yum install wget gcc automake autoconf libtool make xz
1.2 安裝依賴庫
$ yum install zlib-devel openssl-devel bzip2-devel 依賴關系解決 =============================================================================================================================================================================================== 軟件包 架構 版本 倉庫 大小 =============================================================================================================================================================================================== 正在安裝: bzip2-devel x86_64 1.0.5-7.el6_0 base 250 k openssl-devel x86_64 1.0.1e-57.el6 base 1.2 M zlib-devel x86_64 1.2.3-29.el6 base 44 k 為依賴而安裝: keyutils-libs-devel x86_64 1.4-5.el6 base 29 k krb5-devel x86_64 1.10.3-65.el6 base 504 k libcom_err-devel x86_64 1.41.12-23.el6 base 33 k libkadm5 x86_64 1.10.3-65.el6 base 143 k libselinux-devel x86_64 2.0.94-7.el6 base 137 k libsepol-devel x86_64 2.0.41-4.el6 base 64 k 為依賴而更新: e2fsprogs x86_64 1.41.12-23.el6 base 554 k e2fsprogs-libs x86_64 1.41.12-23.el6 base 121 k krb5-libs x86_64 1.10.3-65.el6 base 675 k libcom_err x86_64 1.41.12-23.el6 base 38 k libss x86_64 1.41.12-23.el6 base 42 k openssl x86_64 1.0.1e-57.el6 base 1.5 M 事務概要 =============================================================================================================================================================================================== $ yum install -y tkinter tk-devel tk # 在Linux中python默認是不安裝Tkinter模塊,matplotlib依賴Tkinter模塊 依賴關系解決 =============================================================================================================================================================================================== 軟件包 架構 版本 倉庫 大小 =============================================================================================================================================================================================== 正在安裝: tk x86_64 1:8.5.7-5.el6 base 1.4 M tk-devel x86_64 1:8.5.7-5.el6 base 496 k tkinter x86_64 2.6.6-66.el6_8 base 258 k 為依賴而安裝: fontconfig-devel x86_64 2.8.0-5.el6 base 209 k freetype-devel x86_64 2.3.11-17.el6 base 365 k libX11-devel x86_64 1.6.4-3.el6 base 983 k libXau-devel x86_64 1.0.6-4.el6 base 14 k libXft-devel x86_64 2.3.2-1.el6 base 19 k libXrender-devel x86_64 0.9.10-1.el6 base 17 k libxcb-devel x86_64 1.12-4.el6 base 1.1 M tcl x86_64 1:8.5.7-6.el6 base 1.9 M tcl-devel x86_64 1:8.5.7-6.el6 base 162 k tix x86_64 1:8.4.3-5.el6 base 252 k xorg-x11-proto-devel noarch 7.7-14.el6 base 288 k 為依賴而更新: libX11 x86_64 1.6.4-3.el6 base 587 k libX11-common noarch 1.6.4-3.el6 base 171 k libXrender x86_64 0.9.10-1.el6 base 24 k libxcb x86_64 1.12-4.el6 base 180 k python x86_64 2.6.6-66.el6_8 base 76 k python-libs x86_64 2.6.6-66.el6_8 base 5.3 M 事務概要 =============================================================================================================================================================================================== Install 14 Package(s) Upgrade 6 Package(s) $ yum install readline-devel.x86_64 #解決python3退格功能 依賴關系解決 ================================================================================================================================================================================================ 軟件包 架構 版本 倉庫 大小 ================================================================================================================================================================================================ 正在安裝: readline-devel x86_64 6.0-4.el6 base 134 k 為依賴而安裝: ncurses-devel x86_64 5.7-4.20090207.el6 base 641 k 事務概要 ================================================================================================================================================================================================ Install 2 Package(s)
1.3 編譯安裝
$ wget https://www.python.org/ftp/python/3.5.4/Python-3.5.4.tar.xz $ tar xf Python-3.5.4.tar.xz $ cd Python-3.5.4 $ ./configure --enable-unicode=ucs2 --enable-shared // --enable-optimizations $echo $? 0 $ make && make install Collecting setuptools Collecting pip Installing collected packages: setuptools, pip Successfully installed pip-9.0.1 setuptools-28.8.0 $echo $? 0 如果提示:Ignoring ensurepip failure: pip 8.1.1 requires SSL/TLS;原因沒有安裝或升級oenssl: $ echo -e "/usr/local/lib/\n/usr/local/lib64/" > /etc/ld.so.conf.d/local-lib-x86_64.conf $ ldconfig $ python3 -V Python 3.5.4 $ pip3 -V #或:pip -V 強烈建議使用8.1或更高版本的pip或pip3 pip 9.0.1 from /usr/local/lib/python3.5/site-packages (python 3.5) $ which pip3 /usr/local/bin/pip3 升級pip $ python3 -m pip install -U pip Requirement already up-to-date: pip in /usr/local/lib/python3.5/site-packages 如果發現沒有安裝pip,請單獨安裝pip: $ wget https://link.jianshu.com/?t=https://bootstrap.pypa.io/get-pip.py $ mv index.html\?t\=https\:%2F%2Fbootstrap.pypa.io%2Fget-pip.py get-pip.py $ python3 get-pip.py
2 安裝tensorflow
2.1 安裝tensorflow
$ pip3 install tensorflow-gpu #Python 3.n; GPU支持(須有英偉達顯卡)
$ pip3 install tensorflow #Python 3.n; CPU支持(不支持GPU)
Collecting tensorflow
Downloading tensorflow-1.4.0-cp35-cp35m-manylinux1_x86_64.whl (40.7MB)
100% |████████████████████████████████| 40.7MB 7.8kB/s
Collecting numpy>=1.12.1 (from tensorflow)
Downloading numpy-1.13.3-cp35-cp35m-manylinux1_x86_64.whl (16.9MB)
100% |████████████████████████████████| 16.9MB 9.1kB/s
Collecting six>=1.10.0 (from tensorflow)
Downloading six-1.11.0-py2.py3-none-any.whl
Collecting protobuf>=3.3.0 (from tensorflow)
Downloading protobuf-3.5.0.post1-cp35-cp35m-manylinux1_x86_64.whl (6.4MB)
100% |████████████████████████████████| 6.4MB 11kB/s
Collecting wheel>=0.26 (from tensorflow)
Downloading wheel-0.30.0-py2.py3-none-any.whl (49kB)
100% |████████████████████████████████| 51kB 36kB/s
Collecting tensorflow-tensorboard<0.5.0,>=0.4.0rc1 (from tensorflow)
Downloading tensorflow_tensorboard-0.4.0rc3-py3-none-any.whl (1.7MB)
100% |████████████████████████████████| 1.7MB 14kB/s
Collecting enum34>=1.1.6 (from tensorflow)
Downloading enum34-1.1.6-py3-none-any.whl
Requirement already satisfied: setuptools in /usr/local/lib/python3.5/site-packages (from protobuf>=3.3.0->tensorflow)
Collecting markdown>=2.6.8 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
Downloading Markdown-2.6.9.tar.gz (271kB)
100% |████████████████████████████████| 276kB 23kB/s
Collecting bleach==1.5.0 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
Downloading bleach-1.5.0-py2.py3-none-any.whl
Collecting html5lib==0.9999999 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
Downloading html5lib-0.9999999.tar.gz (889kB)
100% |████████████████████████████████| 890kB 18kB/s
Collecting werkzeug>=0.11.10 (from tensorflow-tensorboard<0.5.0,>=0.4.0rc1->tensorflow)
Downloading Werkzeug-0.12.2-py2.py3-none-any.whl (312kB)
100% |████████████████████████████████| 317kB 18kB/s
Installing collected packages: numpy, six, protobuf, wheel, markdown, html5lib, bleach, werkzeug, tensorflow-tensorboard, enum34, tensorflow
Running setup.py install for markdown ... done
Running setup.py install for html5lib ... done
Successfully installed bleach-1.5.0 enum34-1.1.6 html5lib-0.9999999 markdown-2.6.9 numpy-1.13.3 protobuf-3.5.0.post1 six-1.11.0 tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc3 werkzeug-0.12.2 wheel-0.30.0
2.2 卸載TensorFlow # 重裝時使用
$ pip3 uninstall tensorflow # for Python 3.n
2.3 安裝附屬包
$ pip3 install matplotlib
Collecting matplotlib
Downloading matplotlib-2.1.0-cp35-cp35m-manylinux1_x86_64.whl (15.0MB)
100% |████████████████████████████████| 15.0MB 13kB/s
Collecting pytz (from matplotlib)
Downloading pytz-2017.3-py2.py3-none-any.whl (511kB)
100% |████████████████████████████████| 512kB 37kB/s
Requirement already satisfied: six>=1.10 in /usr/local/lib/python3.5/site-packages (from matplotlib)
Collecting python-dateutil>=2.0 (from matplotlib)
Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
100% |████████████████████████████████| 194kB 41kB/s
Collecting pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 (from matplotlib)
Downloading pyparsing-2.2.0-py2.py3-none-any.whl (56kB)
100% |████████████████████████████████| 61kB 24kB/s
Requirement already satisfied: numpy>=1.7.1 in /usr/local/lib/python3.5/site-packages (from matplotlib)
Collecting cycler>=0.10 (from matplotlib)
Downloading cycler-0.10.0-py2.py3-none-any.whl
Installing collected packages: pytz, python-dateutil, pyparsing, cycler, matplotlib
Successfully installed cycler-0.10.0 matplotlib-2.1.0 pyparsing-2.2.0 python-dateutil-2.6.1 pytz-2017.3
$ pip3 install Pillow
Collecting Pillow
Downloading Pillow-4.3.0-cp35-cp35m-manylinux1_x86_64.whl (5.8MB)
100% |████████████████████████████████| 5.8MB 10kB/s
Collecting olefile (from Pillow)
Downloading olefile-0.44.zip (74kB)
100% |████████████████████████████████| 81kB 15kB/s
Building wheels for collected packages: olefile
Running setup.py bdist_wheel for olefile ... done
Stored in directory: /root/.cache/pip/wheels/20/58/49/cc7bd00345397059149a10b0259ef38b867935ea2ecff99a9b
Successfully built olefile
Installing collected packages: olefile, Pillow
Successfully installed Pillow-4.3.0 olefile-0.44
2.4 需安裝的包
bleach-1.5.0
enum34-1.1.6
html5lib-0.9999999
markdown-2.6.9
numpy-1.13.3 # TensorFlow要求的數字處理軟件包。
protobuf-3.5.0.post1
six-1.11.0
tensorflow-1.4.0
tensorflow-tensorboard-0.4.0rc3
werkzeug-0.12.2
wheel-0.30.0 # 管理(.whl)格式的Python壓縮包。
Pillow-4.3.0
olefile-0.44
cycler-0.10.0
matplotlib-2.1.0
pyparsing-2.2.0
python-dateutil-2.6.1
pytz-2017.3
dev-0.4.0 # 添加Python的擴展。
pip3-9.0.1 # 安裝和管理某些Python包。
註:如果無法在線安裝,請到https://www.pypi-mirrors.org/上的網址下載,
例如http://pypi.pubyun.com/simple/ ;http://mirrors.163.com/pypi/simple等等
3 編譯升級GLIBC到2.17(glibc>=2.16)
由於centos6.x上glibc最多到2.12,而強行使用高版本的glibc會導致程序意外崩潰,因此,我們采用本機源碼編譯安裝。
$ strings /lib64/libc.so.6 |grep GLIBC #查看當前glibc支持的版本
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_PRIVATE
$ wget http://ftp.gnu.org/gnu/libc/glibc-2.17.tar.gz
$ tar -zxvf glibc-2.17.tar.gz && cd glibc-2.17
$ mkdir build && cd build
$ ../configure --prefix=/usr --with-headers=/usr/include --with-binutils=/usr/bin
$ make && make install
$ strings /lib64/libc.so.6 |grep GLIBC
GLIBC_2.2.5
GLIBC_2.2.6
GLIBC_2.3
GLIBC_2.3.2
GLIBC_2.3.3
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.5
GLIBC_2.6
GLIBC_2.7
GLIBC_2.8
GLIBC_2.9
GLIBC_2.10
GLIBC_2.11
GLIBC_2.12
GLIBC_2.13
GLIBC_2.14
GLIBC_2.15
GLIBC_2.16
GLIBC_2.17
GLIBC_PRIVATE
4 編譯升級GCC到4.8.3(因為需要用到CXXABI_1.3.7,所以要求gcc版本大於4.8)
$ yum install bzip2 gcc-c++
$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.gz
$ tar -zxvf gcc-4.8.3.tar.gz
$ cd gcc-4.8.3
$ ./contrib/download_prerequisites # 腳本文件會幫我們下載、配置、安裝依賴庫
註:如果服務器無法連接外網,需單獨下載這三個包到當前目錄下,解壓,並做鏈接;
$ wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
$ wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
$ wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
$ tar xf mpfr-2.4.2.tar.bz2
$ tar xf gmp-4.3.2.tar.bz2
$ tar xf mpc-0.8.1.tar.gz
$ ln -s mpc-0.8.1 mpc
$ ln -s mpfr-2.4.2 mpfr
$ ln -s gmp-4.3.2 gmp
$ll gmp* mpc* mpfr* -d
lrwxrwxrwx 1 root root 9 12月 7 15:23 gmp -> gmp-4.3.2
drwxrwxrwx 15 1001 wheel 4096 1月 8 2010 gmp-4.3.2
lrwxrwxrwx 1 root root 9 12月 7 15:23 mpc -> mpc-0.8.1
drwxrwxrwx 5 1000 1000 4096 12月 8 2009 mpc-0.8.1
lrwxrwxrwx 1 root root 10 12月 7 15:23 mpfr -> mpfr-2.4.2
drwxrwxrwx 5 1114 1114 8192 11月 30 2009 mpfr-2.4.2
$ mkdir build && cd build
$ ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
$ make && make install # 測試時make相當慢,大概走了3個小時,一般服務器30分鐘
$ gcc -v # 不需要修改環境變量
使用內建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-unknown-linux-gnu/4.8.3/lto-wrapper
目標:x86_64-unknown-linux-gnu
配置為:../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
線程模型:posix
gcc 版本 4.8.3 (GCC)
$ echo -e "/usr/local/lib\n/usr/local/lib64" >/etc/ld.so.conf.d/local_libs.conf
$ ldconfig
如果報:ldconfig: /usr/local/lib64/libstdc++.so.6.0.19-gdb.py 不是 ELF 文件 - 它起始的魔數錯誤。
ldconfig: /usr/local/lib64/libstdc++.so.6.0.19-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
$ mv /usr/local/lib64/{,bak_}libstdc++.so.6.0.19-gdb.py #改名
$ ldconfig
修改libstdc++.so.6的鏈接:
$ rm -f /usr/lib64/libstdc++.so.6
$ cp -a /usr/local/lib64/libstdc++.so.6.0.19 /usr/lib64/
$ ln -s /usr/lib64/libstdc++.so.6.0.19 /usr/lib64/libstdc++.so.6
$ strings /usr/lib64/libstdc++.so.6 |grep CXXABI_
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1
5 測試TensorFlow
$ python3 #驗證
>>> import tensorflow as tf
>>> hello = tf.constant(‘Hello, TensorFlow!‘)
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
$ python3
>>> import tensorflow as tf
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
$ python3
>>> import tensorflow as tf
>>> import os
>>> import shutil
>>> import numpy as np
>>> from PIL import Image
>>> import matplotlib.pyplot as plt
>>>
6 參考
http://blog.csdn.net/numen27/article/details/75332833
http://www.jianshu.com/p/fdb7b54b616e
http://blog.csdn.net/lenbow/article/details/51203526#1
https://www.tensorflow.org/install/install_linux #需×××
7 安裝bazel(源碼安裝時的編譯器)不做
7.1 安裝JDK1.8
google使用bazel構建tensorflow,因此我們需要編譯之。首先安裝64位jdk1.8,因為bazel需要java8來編譯,
上傳JDK1.8(jdk-8u66-linux-x64.tar.gz)安裝包到/data/tools、
$ tar xf jdk-8u66-linux-x64.tar.gz
$ vim /etc/profile.d/java.sh
export JAVA_HOME=/data/tools/jdk1.8.0_66
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
$ source /etc/profile.d/java_pwdx_grep.sh
$ java -version
java version "1.8.0_66"
java(TM) SE Runtime Environment (build 1.8.0_66-b17)
java HotSpot(TM) 64-Bit Server VM (build 25.66-b17, mixed mode)
7.2 編譯bazel
$ git clone https://github.com/bazelbuild/bazel.git
$ cd bazel
$ git checkout -b dev 0.8.0
$ ./compile.sh
8 報錯總結
8.1 找不到Glibc2.XX(ImportError: /lib64/tls/libc.so.6: version `GLIBC_2.14‘ not found)
glibc是GNU發布的libc庫,即c運行庫。 glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。 glibc除了封裝linux操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。
由此可見,問題的根源是系統不兼容,ubuntu上用的libc 版本較高,而 CentOS 上用的版本太低導致不能執行。。
解決這個問題有三種方法:
第一種:升級Glibc,這個風險非常大,很多時候升完了發現好多東西都不能用了;
第二種:外鏈Glibc,也就是在其他目錄建一個Glibc,然後添加一個環境變量,這個在網上看貌似是可行的,但我這麽做的時候依然報錯。
第三種:更換linux系統,這個問題很多時候是CentOS安裝tf環境時候造成的,可以嘗試更換容器
8.2 glibc: LD_LIBRARY_PATH shouldn‘t contain the current directory
LD_LIBRARY_PATH不能包含當前目錄,需要修改環境變量並重新執行configure
echo $LD_LIBRARY_PATH # 查看
export LD_LIBRARY_PATH= # 定義
echo $LD_LIBRARY_PATH # 檢查
./glibc-2.14/configure
8.3 直接升級glibc(風險比較大)
yum install gcc
wget http://ftp.gnu.org/pub/gnu/glibc/glibc-2.17.tar.xz
tar -xvf glibc-2.17.tar.xz
cd glibc-2.17
mkdir build
cd build
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
make && make install
需要等大概10分鐘
8.4 外鏈安裝glibc2
下載Glibc2.14:
http://ftp.gnu.org/gnu/glibc/或者http://www.gnu.org/software/libc/
安裝:
xz -d glibc-2.14.tar.xz
tar -xvf glibc-2.14.tar
進入源碼目錄 建立構建目錄,並cd進入構建目錄:
cd glibc-2.14
mkdir build
配置:
../configure --prefix=/opt/glibc-2.14
編譯安裝:
make -j4
sudo make install
臨時修改環境變量:
LD_LIBRARY_PATH=/opt/glibc-2.14/lib:$LD_LIBRARY_PATH
8.5 外鏈安裝導致的嚴重後果
安裝過程中,因為修改/etc/ld.so.conf文件,ldconfig後導致輸入命令後,連最基本的命令也會報錯:
ls
ls: error while loading shared libraries: __vdso_time: invalid mode for dlopen(): Invalid argument
解決方法:
千萬不要斷開ssh,不然就遠程不上去了
vi /etc/profile 加入
export LD_LIBRARY_PATH=/usr/lib:/usr/lib64:/lib:/lib64:/usr/local/lib:/usr/local/lib64
鏈接完了之後,Glibc2的問題是沒有了,但import tensorflow的時候出現 Segmentation fault (core dumped)
8.6 輸入所有命令後都沒反應了。。。
因為升級了Glibc,導致系統出問題了,把環境變量改回去就可以了。
8.7 glibc3找不到(version `GLIBCXX_3.4.21‘ not found)
參考http://blog.csdn.net/rznice/article/details/51090966
其實和找不到glibc2的性質差不多
strings /usr/lib64/libstdc++.so.6.0.13 |grep GLIBC
8.8 沒有git
yum install git-core
要是不能聯網有沒有git都一樣,所有包都需要手動下載
8.9 安**inutils
從以下目錄下載binutils:ftp.gnu.org/gnu/binutils/binutils-2.28.tar.bz2
tar jxvf binutils-2.28.tar.bz2
mkdir binutils-build
cd binutils-build
../binutils-2.28/configure
make -j4
make install
8.10 安**azel(大坑)
下載地址1:git clone https://github.com/bazelbuild/bazel(非常之慢)
下載地址2:git clone https://github.com/CStzdong/bazel
發現報錯:
INFO: You can skip this first step by providing a path to the bazel binary as second argument:
INFO: ./compile.sh compile /path/to/bazel
?? Building Bazel from scratch
ERROR: Must specify PROTOC if not bootstrapping from the distribution artifact
--------------------------------------------------------------------------------
NOTE: This failure is likely occuring if you are trying to bootstrap bazel from
a developer checkout. Those checkouts do not include the generated output of
the protoc compiler (as we prefer not to version generated files).
* To build a developer version of bazel, do
bazel build //src:bazel
* To bootstrap your first bazel binary, please download a dist archive from our
release page at https://github.com/bazelbuild/bazel/releases and run
compile.sh on the unpacked archive.
The full install instructions to install a release version of bazel can be found
at https://docs.bazel.build/install-compile-source.html
For a rationale, why the bootstrap process is organized in this way, see
https://bazel.build/designs/2016/10/11/distribution-artifact.html
進入錯誤信息中提到的https://github.com/bazelbuild/bazel/releases網站,選擇最近版本的鏈接,進去後發現有一堆安裝包。選擇其中的一個直接下載https://github.com/bazelbuild/bazel/releases/download/0.5.3/bazel-0.5.3-installer-linux-x86_64.sh運行安裝成功,執行時報錯:
/usr/local/bin/bazel: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.19‘ not found (required by /usr/local/bin/bazel)
這個錯誤會在下文提到
重新運行./compile.sh
運行到一半報錯
再執行一次,發現兩次運行./compile.sh出現的錯誤不一致!疑似安裝程序bug
嘗試低版本bazel0.5.2,仍出現錯誤
嘗試更低版本0.4.5,下載解壓縮運行./compile.sh後安裝成功!!!
下載地址:https://github.com/bazelbuild/bazel/releases/download/0.4.5/bazel-0.4.5-dist.zip
然後執行:
mkdir bazel-0.4.5-dist
cd bazel-0.4.5-dist
unzip ../bazel-0.4.5-dist.zip
./compile.sh
cp ./output/bazel /usr/local/bin(復制bazel的Binary文件至/usr/local/bin,使得全局都能找到該文件)
8.11 關於手動離線安**azel
不建議完全手動安**azel,全程有100多個包的依賴,。,,,,,,
8.12 手動安裝numpy和scipy
依賴的包:
scipy-0.11.0
numpy-1.6.2
nose-1.2.1
lapack-3.4.2
atlas-3.10.0
參考:http://blog.chinaunix.net/uid-22488454-id-3978860.html
8.13 pip
如果沒有pip,就到PIP官網下載get-pip.py。
參考鏈接:http://www.jianshu.com/p/81b648b1d572
最後從python官網下載p3安裝包就好了
如果公司有自己的鏡像,可以修改pip的配置文件:
cd ~/.pip/pip.conf(如果沒有,就自己建一個;如果不能保存,說明沒有.pip目錄,需要進入~目錄mkdir .pip)
然後加入下面的內容
[global]
index-url = XXX
trusted-host = pypi.douban.com
disable-pip-version-check = true
timeout = 120
註:XXX為國內或企業內部鏡像,國內用https://pypi.douban.com/simple,公司內部就用自己的。
8.14 找不到readelf
依據鏈接http://www.jianshu.com/p/308a4e803c81的說法,先用readelf -s 文件路徑|grep GLIBC_2.14查看so裏到底哪部分依賴了glibc2.14,發現readelf: command not found,沒有readelf命令。。。
(readelf用來顯示一個或多個elf格式的目標文件信息)
依據鏈接http://pkgs.loginroot.com/errors/notFound/readelf,需要添加環境變量:export PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin"
8.15 Segmentation fault (core dumped)
直接強制退出Python了
根據鏈接https://github.com/tensorflow/tensorflow/issues/8197的解釋,原因是gcc的版本過低,更新gcc在前文已經提過了。
還有文章提到是scipy和tensorflow沖突
根據http://blog.csdn.net/shouwangzhelv/article/details/51851155提到的解決方案,重新手工編譯了scipy,依然不行。
8.16 安裝anaconda
參考:http://www.jianshu.com/p/03d757283339
如果機器不能聯網,anaconda基本就廢掉了。。。
如果不能用ananconda,只好自己下載包然後上傳了,單臺機器就rz和sz,多臺機器之間傳文件就scp xxx root@abc:url
8.17 在centos系統下,導入matplotlib時,出現ImportError: No module named ‘_tkinter‘的錯誤,
首先yum list installed | grep ^tk ;查看是否存在相應模塊,通常原因是tkinter和tk-devel缺失。
通過yum install -y tkinter和yum install -y tk-devel下載相應模塊,再重新編譯Python即可。
或者編譯python的時候選擇添加參數--enable-unicode=ucs2
$ python3
>>> import matplotlib.pyplot as plt
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/site-packages/matplotlib/pyplot.py", line 113, in <module>
_backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
File "/usr/local/lib/python3.5/site-packages/matplotlib/backends/__init__.py", line 60, in pylab_setup
[backend_name], 0)
File "/usr/local/lib/python3.5/site-packages/matplotlib/backends/backend_tkagg.py", line 6, in <module>
from six.moves import tkinter as Tk
File "/usr/local/lib/python3.5/site-packages/six.py", line 92, in __get__
result = self._resolve()
File "/usr/local/lib/python3.5/site-packages/six.py", line 115, in _resolve
return _import_module(self.mod)
File "/usr/local/lib/python3.5/site-packages/six.py", line 82, in _import_module
__import__(name)
File "/usr/local/lib/python3.5/tkinter/__init__.py", line 35, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named ‘_tkinter‘
或者參照:http://www.qttc.net/201304306.html
正確安裝新版Python(在Linux中python默認是不安裝Tkinter模塊,)
1 首先修改Setup.dist文件
$ cd Python-3.5.4
$ cp Modules/Setup.dist{,_$(date +%F)}
$ vim Modules/Setup.dist # 把下面相應行的註釋去掉,修改具體版本
_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT -L/usr/local/lib -I/usr/local/include -ltk8.5 -ltcl8.5 -lX11
以上第四行-ltk8.5 -ltcl8.5 默認是 8.2 ,請你系統實際tcl/tk版本修改:我系統中裝的是8.5,所以這裏我改成了8.5
$ rpm -qa | grep ^tk
tk-8.5.7-5.el6.x86_64
tk-devel-8.5.7-5.el6.x86_64
tkinter-2.6.6-66.el6_8.x86_64
$ rpm -qa | grep ^tcl
tcl-8.5.7-6.el6.x86_64
tcl-devel-8.5.7-6.el6.x86_64
2 安裝tck-devel、tk-devel
$ yum install tcl-devel tk-devel -y
3 開始配置安裝python
$ ldconfig
$ ./configure
$ make && make install
4 驗證
新版Python是否可以使用tkinter模塊
$ python3
>>> import tkinter
>>>
舊版Python是否可以使用tkinter模塊
$ python
>>> import Tkinter
>>>
8.18 升級gcc完,把/usr/local/lib*添加到系統動態鏈接庫:echo -e "/usr/local/lib\n/usr/local/lib64" >/etc/ld.so.conf.d/local_lib.conf後,
執行ldconfig報錯:ldconfig: /usr/local/lib64/libstdc++.so.6.0.19-gdb.py is not an ELF file - it has the wrong magic bytes at the start.
不是 ELF 文件 - 它起始的魔數錯誤。
9 Pytesseract安裝
File "<string>", line 1, in <module>
ImportError: No module named numpy.distutils
-- Found PythonInterp: /usr/local/bin/python3 (found suitable version "3.5.4", minimum required is "3.4")
-- Found PythonLibs: /usr/local/lib/libpython3.5m.so (found suitable exact version "3.5.4")
-- Found JNI: /usr/java/jdk1.8.0_66/jre/lib/amd64/libjawt.so
-- Could NOT find Matlab (missing: MATLAB_MEX_SCRIPT MATLAB_INCLUDE_DIRS MATLAB_ROOT_DIR MATLAB_LIBRARIES MATLAB_LIBRARY_DIRS MATLAB_MEXEXT MATLAB_ARCH MATLAB_BIN)
-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
pytesseract
Collecting pytesseract
Downloading pytesseract-0.1.7.tar.gz (150kB)
100% |████████████████████████████████| 153kB 470kB/s
Collecting Pillow (from pytesseract)
Downloading Pillow-4.3.0-cp35-cp35m-manylinux1_x86_64.whl (5.8MB)
100% |████████████████████████████████| 5.8MB 73kB/s
Collecting olefile (from Pillow->pytesseract)
Downloading olefile-0.44.zip (74kB)
100% |████████████████████████████████| 81kB 95kB/s
安裝這三個依賴包
tar -xvf pytesseract-0.1.7.tar.gz
cd pytesseract-0.1.7.tar.gz
python3 setup.py install
pip3 install Pillow-4.3.0-cp35-cp35m-manylinux1_x86_64.whl
unzip olefile-0.44.zip
cd olefile-0.44.zip
python3 setup.py install
參考:
https://m.2cto.com/kf/201610/557136.html
http://techieroop.com/install-opencv-in-centos/
http://blog.csdn.net/zl18310999566/article/details/77880862
10 Tesseract-OCR 安裝
1、安裝編譯環境:
yum install gcc gcc-c++ make
yum groupinstall "Development Tools"
yum install autoconf automake libtool
yum install libjpeg-devel libpng-devel libtiff-devel zlib-devel
2、下載編譯依賴庫
3.04
版本tar -xvf leptonica-1.72.tar.gz
cd leptonica-1.72
./configure && make && make install
3、下載編譯 tesseract-ocr (註意這裏下載下來的包要放在leptonica-1.72 下,否則編譯的時候會出問題)
3.04版本
mv 3.04.00.tar.gz Tesseract3.04.00.tar.gz
tar -xvf Tesseract3.04.00.tar.gz
cd tesseract-3.04.00/
./autogen.sh
./configure
make && make install
4、下載識別字體的字體文件
3.04版本
wget --no-check-certificate https://github.com/tesseract-ocr/tessdata/raw/master/eng.traineddata
wget --no-check-certificate https://github.com/tesseract-ocr/tessdata/raw/master/chi_sim.traineddata
下載這兩個語言識別包eng.traineddata,chi_sim.traineddata
5、將tesseract-ocr的字體文件拷貝到/usr/local/share/tessdata/下
cp *.traineddata /usr/local/share/tessdata/
6、配置字體文件的環境變量 vi /etc/profile (編譯完成後需要source/etc/profile )
export TESSDATA_PREFIX=/usr/local/share/
7、拷貝.so文件
cp /usr/local/lib/*.so.* /usr/lib64/
END
CentOS-6.x系統基於python-3.5安裝tensorflow-1.4