说起来感觉不可思议,现在竟然 python 成为人工智能领域的一个最普及的编程语言,原来我学习机器学习时,大家用的是 Matlab 或者 Prolog 。应该是 python 作为主流编程语言之一,由于其简单易学的特性,是的很多数据科学相关的类库发展的比较好,然后由于其类库齐全,就又有更多的开发者为其开发更多的类库,这是一个典型的正向循环。其实除了 Python 外,R 在做数据分析和数据可视化上也很有优势,再有现在的学术圈好像比较流行 Octave (一个和 Matlab 非常像的免费开源编程语言)。而遇到这种选择时,而我一般的学习习惯是都尝试一下。
Python 领域目前比较流行沙箱的环境配置,这样一个沙箱环境可以为每一个 Python 应用创建属于自己的运行环境和配置,彼此互不影响。
在 macOS 下,我采用了
+
- pyenv
插件的形式进行环境配置。其中
- pyenv-virtualenv
是一个 Python 的版本管理工具,也就是说使用
- pyenv
,你可以安装多个 Python 版本,2.x 也好,3.x 也好,都可以安装在同一个操作系统中。 如果你和我一样在使用 Mac 的话,那么通过
- pyenv
可以很方便的安装
- brew
。
- brew install pyenv
这样之后,我们可以安装任意版本的 python ,比如
就是安装 Python 3.6.3,类似的
- pyenv install 3.6.3
就是安装 Python 2.7.13。如果你没有科学上网的话,python 的下载速度会非常感人,但所幸的是,我们可以采用搜狐的镜像将安装包下载下来
- pyenv install 2.7.13
(其中
- wget http://mirrors.sohu.com/python/x.y.z/Python-x.y.z.tar.xz -P ~/.pyenv/cache/
为版本号),然后再进行
- x.y.z
。值得指出的一点是这样安装的 python 并非以 Library Framework 形式安装,有些软件需要这种安装形式的 python,那么我们如果要支持的话,需要设置环境变量如下进行安装:
- pyenv install
- env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install <your version>
切换 Python 版本的时候呢,
给我们几个命令用于不同条件下的切换,
- pyenv
顾名思义是把版本切换应用到全局,
- global
这条命令执行之后,你的 Python 环境就全局性的切换到了 2.7.13。
- pyenv global 2.7.13
用于设置应用的 Python 版本,而
- pyenv local 2.7.13
指的就是在当前窗口设置版本。
- pyenv shell 2.7.3
但我们为了机器学习方便,需要安装一个 Anaconda ,这个东东可以理解成一个专注于机器学习和数据挖掘的 python 集成环境。所幸的是,
同样支持安装 Anaconda ,在写这篇文章的时候, Anaconda 的最新版本是 5.0.0,所以我们通过
- pyenv
来安装这个版本,注意这个版本比普通 python 要大很多(大概 500-600 MB)
- pyenv install anaconda3-5.0.0
并不负责管理虚拟沙箱环境,但是我们可以通过一个插件
- pyenv
来完成虚拟环境的管理。也是通过 brew 安装:
- pyenv-virtualenv
,安装后就可以通过下面的命令创建一个虚拟环境 mlpy :
- brew install pyenv-virtualenv
,以后要切换到这个环境呢,就使用
- pyenv virtualenv anaconda3-5.0.0 mlpy
或者
- pyenv local mlpy
来切换到
- pyenv activate mlpy
这个虚拟环境。
- mlpy
当然 pip install 安装的时候,如果不科学上网,也会很慢,我们这里配置一下 ~/.pip/pip.conf (没有就自己创建哈),采用豆瓣镜像。
- [global] index - url = https: //pypi.douban.com/simple
安装 conda 后,有的时候会产生一些系统命令上的冲突,这时候需要安装一个 pyenv 的插件 pyenv-which-ext
- brew install pyenv - which - ext
Octave 我们就不采用沙箱安装环境了,因为 Python 之所以推荐沙箱安装环境,是因为使用 python 可以做的事情很多,除了机器学习,我们可以写脚本、写 web、写爬虫等等。这么多的应用可能依赖的环境各有区别,有的需要 2.x 和一些特定的包,有的需要 3.x,有的还需要 python 以 framework 形式安装。这样的一些需求导致沙箱对于 python 是必要的,但 Octave 的应用范围很明确,就是数据科学,起码我的目的就是这样,所以我选择了更简单的安装方式。
- brew install octave
我当然安装了大名鼎鼎的 PyCharm,但我目前更喜欢轻量级的 editor,而在前端领域我使用的是 VSCode,于是我就琢磨者怎么把 VSCode 作为一个用于 python 开发的 IDE (程序员爱折腾是天性吧)。VSCode 的 extension 中已经有不少好用的 python 插件了,我挑选的这款叫做 Python Extension Pack,里面含有几款非常好用的插件:
、
- Python
、
- Jupyter
、
- MagicPython
、
- Jinja
和
- Django Template
。基本覆盖了 Python 开发的各个方面,从普通 python 开发到 web 开发。
- Django Snippets
但在开发中我们很多时候需要 lint 来帮助我们尽早发现错误,这就需要使用 pylint,如果使用了沙箱环境的的话,这个 pylint 需要安装到沙箱环境中。比如,我们创建了一个沙箱环境
,那么我们为该程序设置自己的环境
- pyenv virtualenv 3.6.3 myapp_env
,这样之后就可以安装 pylint 等工具了。
- pyenv local myapp_env
- pip install pylint
- pip install pep8
- pip install autopep8
题外话,如果做 Django 开发,我们还需要多做一些步骤,首先安装 pylint 的 Django 插件
。而且,对于 VSCode 来说,我们还需要设置一下 python 的参数,以便让 python 插件可以在启动时加载 pylint 的支持。
- pip install pylint-django
- {
- "python.linting.pylintArgs": [
- "--load-plugins",
- "pylint_django",
- "--disable=missing-docstring"
- ],
- "python.formatting.provider": "autopep8",
- "editor.formatOnSave": true,
- "python.linting.pep8Enabled": true
- }
来源: https://juejin.im/post/5a12e6e56fb9a045055dbd52