机器学习中我们会碰到很多 python 库和软件,还有环境设置,这里集中记录一下,本文涉及以下内容:
- 明确机器中会有多个 python 环境存在
- 安装 python 虚拟环境
- jupyter 安装,使用
一台机器中会有多个 python 环境
机器上可以安装多套版本的 python 的,尤其是 mac,mac 上自带 python2.7,我们安装 python3.7 之后是覆盖不了系统的 python2.7 版本的,所以 mac 上一般都是两套 python,2.7 和 3.7 共存,这就不可避免的会产生兼容问题
- 我们可以使用:
python
、python3
切换 python 解释器
➜ ~ python
Python 2.7.16 (default, Jun 19 2019, 07:42:24)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
➜ ~ python3
Python 3.7.2 (v3.7.2:9a3ffc0492, Dec 24 2018, 02:44:43)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
- 使用:
which
来查看各版本 python 解释器的安装位置
➜ ~ which python
/usr/local/bin/python
➜ ~ which python3
/Library/Frameworks/Python.framework/Versions/3.7/bin/python3
机器内部存在多套 python 环境相互之间是有影响的
- 不同 python 版本及其开源库之间的兼容问题
- 机器中的多个项目,可能每个项目都要求有自己的 python 环境
所以就有人提出了给 python 加上虚机环境
安装 python 虚拟环境
python 的虚机环境
允许机器上同时安装多套 python,而相互之间不会相互影响。pip
命令大家都知道吧,pip
是 python 安装库的命令,我们用 pip 安装的库都是安转在系统统一的目录下的,拿 mac 举例来说,就是 python 2.7 和 python 3.7 同时使用这些库,问题是这些库很多是不能同时兼容 2.7 和 3.7 的,所以蛋疼的兼容问题很难搞
有时需要在一台电脑上使用多个版本的python, python框架,数据库等,所以使用虚拟环境,使每个环境在独立的容器中运行。
但是在加入虚拟环境
之后就没问题了,在我们指定使用某个 python 的虚拟环境之后,pip 命令安装的库只会安装到指定的虚拟环境下,而不是机器的统一环境下,这样我们就可以给有不同需求的项目配给不同的 python 环境了
目前 python 的虚拟环境使用:virtualenv
,virtualenv
的操作叫繁琐,所有之后又出现了 virtualenvwrapper
来对 virtualenv
整合,让使用、切换环境更简单
1. virtualenv 安装使用
- 安装 virtualenv
pip install virtualenv
- 创建一个虚拟环境,首先我们得装备一个文件夹,所有的虚拟环境文件都是存储在这里的
$ virtualenv venv # venv是我们给虚拟环境起的名字
- 给虚拟环境指定 Python解释器路径,安装时就会制定一个 python 解释器,当然之后我们自己也可以指定
$ virtualenv -p /usr/bin/python2.7 venv # -p 参数指定Python解释器程序路径
- 切换并开始使用 venv 这个虚拟环境
$ source venv/bin/activate
- 退出虚拟环境,此时会回到系统默认的 python 环境中去
$ venv/bin/deactivate
- 删除虚拟环境,只有删除对应虚拟环境的文件夹就可以了
2. virtualenvwrapper 安装使用
virtualenv 使用,切换,查看都不方便,所以就有了 virtualenvwrapper,virtualenvwrapper 创建,切换环境真的非常简单~
- 安装 virtualenvwrapper
pip install virtualenvwrapper
pip install virtualenvwrapper-win #Windows使用该命令
- 在
bash_profile
文件中写入设置- WORKON_HOME 是你虚拟环境放置位置的路径
- 下面这个是
virtualenvwrapper.sh
文件的路径,virtualenvwrapper.sh
文件在你 python 安装位置的bin
文件夹里,这里可能每个人都不一样,大家用which
查找自己的 python 安装路径,然后一步步去找找这个virtualenvwrapper.sh
文件 -
open -e .bash_profile
- 打开 bash_profile 文件 -
source .bash_profile
- 刷新 bash_profile 文件
export WORKON_HOME=/Users/zbzbgo/python_pip_work
source /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh
- 创建虚拟环境
mkvirtualenv venv
- 给虚拟环境设置 python 版本,默认也会设置,不知道 python 路径的,一样用
which python/python3
去找找看
mkvirtualenv -p /usr/local/python3.5.3/bin/python venv
- 查看所有虚拟环境
➜ ~ workon
mypy_3.7
- 切换到指定虚拟环境下
➜ ~ workon mypy_3.7
(mypy_3.7) ➜ ~
- 退出虚拟环境
(mypy_3.7) ➜ ~ deactivate
➜ ~
- 删除虚拟环境一样去删除指定环境的文件夹就行了
pip 镜像地址
pip 安装的库都是外网的,在安装某个库时可能就会因为网络链接中断而报错异常,比如这样:
MacBookPro:~ mac$ pip install numpy
Collecting numpy
Downloading numpy-1.13.1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.5MB)
32% |██████████▎ | 1.5MB 10kB/s eta 0:04:49Exception:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/response.py", line 232, in _error_catcher
yield
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pip/_vendor/requests/packages/urllib3/response.py", line 314, in read
data = self._fp.read(amt)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/pip/_vendor/cachecontrol/filewrapper.py", line 60, in read
data = self.__fp.read(amt)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 448, in read
n = self.readinto(b)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/http/client.py", line 488, in readinto
n = self.fp.readinto(b)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/socket.py", line 575, in readinto
return self._sock.recv_into(b)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 929, in recv_into
return self.read(nbytes, buffer)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 791, in read
return self._sslobj.read(len, buffer)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/ssl.py", line 575, in read
v = self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out
为了应对这问题呢,就2个办法:
- 翻墙,我是推荐翻墙的省事嘛,部分 pip 库系下载速度极慢,大家不要以为死机啦啊~
- 另一个就是镜像了,镜像我没试过,提供替他人的方案
国内pip
镜像地址:
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
使用时在前面加 -i 后跟镜像地址
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider
jupyter
1. 体验下 jupyter
jupyter
是机器学习、数据挖掘领域最好的开发工具了,使用人数最多,口碑最好。大家想象不到的是 jupyter
是 web 版工具,长这个样子:
image
为啥大家都推荐使用 jupyter
呢,因为 jupyter
里面可以在一个网页上同时显示:代码、markdown文档、运行结果、图标
,这种对数据显示能力是其他IED
开发工具远远不能提供的,大家体验一下:
image
image
是不是非常NB,这样可以很方便的分享,展示代码和结果,而这在数据挖掘,机器学习中是至关重要的
2. jupyter 的使用
-
首先我们要构建开发环境
- jupyter 推荐大家使用专用的 python 环境,也就是使用上面介绍的 virtualenv 工具,建立专门的机器开发环境 -
接下来我们要明确代码保存位置
- 一般来说我们会对每个IDE
分别构建一个workspace
来存放代码,jupyter 也是一样,这里我在 workspace_python 目录下新建了一个名为 Test 的 python 项目,项目地址:/Users/zbzbgo/workspace_python/Test
-
cd 进入项目地址,启动 jupyter
- 启动 jupyter 的命令:jupyter notebook
OK,这样就起来了,jupyter 会自动把你项目中的 jupyter 文件加载进来
3. jupyter 快捷键
我省事截个图了:
image
我们最常用的就是:A、B、D、shift + enter
这几个
网友评论