搭建本地python和TensorFlow环境
人工智能的时代已经来了,再不学就晚了。说起来有点惭愧,我研究生主修方向是模式识别与人工智能,【捂脸哭】!
好汉不怕远征难,万水千山只等闲。
搭建环境
安装python
如果是MAC系统,那么默认安装了python 2.7.10,你就不要动了。如果是windows,下个python安装包,装一下。
PS:MAC系统自带的python 2.7.10是够用的,不能删除,可以自己装其他版本。不过暂时用不到。
安装pip
pip官网下一个最新的pip,
$ tar zxvf pip-7.1.2.tar.gz
$ cd pip-7.1.2
$ sudo python setup.py install
# 验证是否安装成功
$ pip freeze
PS: 安装需要root权限,所以需要sudo
pip提速
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xxxx
安装virtualenv
virtualenv是python的沙箱工具.我们毕竟是在自己机器上做实验,为了不来回修改各种环境变量,我们一般还是弄个沙箱完比较好.测试完直接删除就行,不用再去改各种配置文件.
$pip install --upgrade virtualenv
# 安装好后创建一个工作目录,我直接在home里创建了个文件夹.
$virtualenv --system-site-packages ~/tensorflow
# 进入目录激活沙箱.
$ cd ~/tensorflow
$ source bin/activate
(tensorflow) $
一般情况是,我们希望创建一个独立的Python运行环境,命名为venv
:
Mac:myproject michael$ virtualenv --no-site-packages venv
Using base prefix '/usr/local/.../Python.framework/Versions/3.4'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.
命令virtualenv
就可以创建一个独立的Python运行环境,我们还加上了参数--no-site-packages
,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。像我的mac电脑默认python是python 2.7 ,我想创建一个独立的3.7的环境,可以指定python版本
tensorflow virtualenv --no-site-packages --python=/Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7 p3env
Already using interpreter /Library/Frameworks/Python.framework/Versions/3.7/bin/python3.7
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.7'
New python executable in /Users/chalecao/tensorflow/p3env/bin/python3.7
Also creating executable in /Users/chalecao/tensorflow/p3env/bin/python
Installing setuptools, pip, wheel...
done.
➜ tensorflow source p3env/bin/activate
(p3env) ➜ tensorflow python
新建的Python环境被放到当前目录下的venv
目录。有了venv
这个Python环境,可以用source
进入该环境:
Mac:myproject michael$ source venv/bin/activate
(venv)Mac:myproject michael$
注意到命令提示符变了,有个(venv)
前缀,表示当前环境是一个名为venv
的Python环境。
下面正常安装各种第三方包,并运行python
命令:
(venv)Mac:myproject michael$ pip install jinja2
...
Successfully installed jinja2-2.7.3 markupsafe-0.23
(venv)Mac:myproject michael$ python myapp.py
...
在venv
环境下,用pip
安装的包都被安装到venv
这个环境下,系统Python环境不受任何影响。也就是说,venv
环境是专门针对myproject
这个应用创建的。
退出当前的venv
环境,使用deactivate
命令:
(venv)Mac:myproject michael$ deactivate
Mac:myproject michael$
此时就回到了正常的环境,现在pip
或python
均是在系统Python环境下执行。
完全可以针对每个应用创建独立的Python运行环境,这样就可以对每个应用的Python环境进行隔离。
virtualenv是如何创建“独立”的Python运行环境的呢?原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate
进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python
和pip
均指向当前的virtualenv环境。
安装TensorFlow
$ pip install tensorflow //cpu 版本
$ pip install tensorflow-gpu // gpu 版本
PS: 上面两个版本一个是CPU计算的版本,一个是GPU计算的版本,安装一个就行了,cpu的版本兼容性好。如果报错了,就装CPU版本。安装时候用这个命令:
pip install --ignore-installed --upgrade tensorflow
CPU版本在跑程序可能有警告提示:
Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
没关系的。想解决,参考这里
安装jupyter
pip install jupyter
如果提示没有权限,就加上-user,会安装软件到用户目录,而不是系统目录。安装安置后需要把path路径配置下:
$ pip install --user jupyter
然后自己找下位置,对于mac应该在用户目录下Library下python里。编辑 .bash_profile
$ vi .bash_profile
// 添加路径到path
....
PATH=$PATH:/Users/chalecao/Library/Python/2.7/bin
....
然后就可以开启jupyter
jupyter notebook
然后浏览器会打开网页,选择新建->python2, 即可:
然后输入你的代码点运行就好了。
一些问题
问题1:
Could not decode ‘\xe6\x9c\xaa\xe5\x91\xbd\xe5\x90\x8d’ for unicode trait ‘untitled_notebook’ of a LargeFileManager instance.
解决办法:
LANG=zn jupyter notebook
问题2:
matplotlib cannot import name _thread on mac
这个是安装包six的问题
sudo pip install --upgrade --ignore-installed six
问题3:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 21: ordinal not in range(128)
matplotlib画图只接受utf-8编码,如果没有设置就会在画图时报错,解决办法是修改jupyter-notebook 文件:
vi /Users/chalecao/Library/Python/2.7/bin/jupyter-notebook
# ----- 添加下面代码 ----
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
问题4:
找不到virtualenv?
可以执行:
pip show virtualenv
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Name: virtualenv
Version: 20.0.11
Summary: Virtual Python Environment builder
Home-page: https://virtualenv.pypa.io/
Author: Bernat Gabor
Author-email: gaborjbernat@gmail.com
License: MIT
Location: /Users/chalecao/Library/Python/2.7/lib/python/site-packages
Requires: importlib-resources, distlib, filelock, pathlib2, appdirs, six, contextlib2, importlib-metadata
Required-by:
然后执行下面:
sudo /usr/bin/easy_install virtualenv
问题5:
AttributeError: ‘module’ object has no attribute ‘to_rgba’
sudo pip install matplotlib==2.2.0
学习资源
- TensorFlow tutorials
- Learning TensorFlow
- TF Learn (previously SkFlow)
- tensorflow_examples
- https://blog.csdn.net/gubenpeiyuan/article/details/79252402
- https://github.com/jupyterlab/jupyterlab/issues/5345
- https://blog.csdn.net/master_ning/article/details/80300731