工具

  • Pyenv
  • Anaconda
  • PIP
  • Jupyter notebook

1. Pyenv

1.1 pyenv设置多版本python切换

homebrew版本

1
brew -v

pyenv安装

1
brew install pyenv

确认

1
pyenv -v

查看可安装的Python版本

1
pyenv install --list

安装特定版本的Python

1
2
pyenv install <version>
//pyenv install 2.7.15

查看pyenv已安装的Python版本

1
pyenv versions

编辑.bash_profile文件

1
2
3
4
5
cd ~
open .bash_profile

//在弹出的.bash_profile文件中新增
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

保存后更新Source文件

1
source .bash_profile

切换到指定目录,然后输入以下命令切换python版本

1
2
pyenv local <version>
//pyenv local 3.7.1

设定全局的Python版本

1
2
pyenv global <version>
//pyenv global 3.7.1

检查当前目录版本

1
python -V

pycharm选择版本
Pycharm -> Preferences -> Project -> Project Interpreter -> Add Local
添加本地路径~/.pyenv/versions/,选择对应的版本。

卸载指定版本

1
pyenv uninstall 3.7.1

另一种方式:
mac自带的python安装在/usr/bin/python目录下,使用homebrew安装python3

1
2
brew install python3
python3 --version

1.2 linux与pyenv

Common build problems

1
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

将 pyenv 检出到你想安装的目录。建议路径为:$HOME/.pyenv

1
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

添加环境变量。PYENV_ROOT 指向pyenv检出的根目录,并向$PATH添加$PYENV_ROOT/bin 以提供访问 pyenv 这条命令的路径

1
2
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile

向 shell 添加 pyenv init 以启用 shims 和命令补完功能

1
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

重启 shell(因为修改了$PATH

1
$ exec "$SHELL"

2. Anaconda相关

包括Jupyter Notebook、Spyder使用

http://docs.anaconda.com/anaconda/user-guide/getting-started/#open-prompt-mac

2.1 基本

Anaconda is a completely free Python distribution (including for commercial use and redistribution). It includes more than 300 of the most popular Python packages for science, math, engineering, and data analysis.

下载

文档

CONDA文档

2.2 安装错误

(1) 安装时最后一步弹出Traceback (most recent call last):等error

解决:

  1. 安装Microsoft Visual C++ 2008 Redistributable Package (x64)
  2. cmd运行
1
2
3
4
5
"C:\Anaconda\pythonw.exe" -E -s "C:\Anaconda\Lib\_nsis.py" mkmenus

"C:\Anaconda\pythonw.exe" -E -s "C:\Anaconda\Lib\_nsis.py" mkdirs

"C:\Anaconda\pythonw.exe" -E -s "C:\Anaconda\Lib\_nsis.py" addpath
  1. 执行https://stackoverflow.com/questions/34780267/anaconda-python-installation-error 中步骤

(2)encoding error
解决

import sys
sys.setdefaultencoding('utf-8')

(3)部分指令
See what packages are installed by running

$ conda list

Search for packages with ‘scikit’ in the name:

$ conda search scikit

To install a package, use

$ conda install <package-name>

To remove a package, use

$ conda remove <package-name>

(4)环境管理

  • 创建环境

    conda create -n env_name list of packages

-n env_name 设置环境的名称(-n 是指名称)

list of packages 是要安装在环境中的包的列表。
例如,要创建名为 my_env 的环境并在其中安装 numpy,请键入 conda create -n my_env numpy

  • 进入环境

    activate my_env

  • 离开环境

    deactivate

  • 共享环境

conda env export > environment.yaml 将包保存为 YAML。第一部分conda env export 输出环境中的所有包的名称(包括 Python 版本)。

  • 列出环境

    conda env list

当前所在环境的旁边会有一个星号。
默认的环境(即当你不在环境中时使用的环境)名为 root。

  • 删除环境

    conda env remove -n env_name

3. macports

macports提供了各种终端命令来自动下载、编译、安装开源软件包和依赖库。

3.1 安装地址和教程

https://www.macports.org/install.php

编辑 /opt/local/etc/macports/sources.conf

rsync://rsync.macports.org/release/ports/ [default]下添加一行:

http://nummist.com/opencv/ports.tar.gz

3.2 更新问题

macports更新超时解决(修改原rsync行):

1
2
3
4
5
//rsync://rsync.macports.org/release/tarballs/ports.tar [default]

#rsync://rsync.macports.org/release/ports/ [default]

http://www.macports.org/files/ports.tar.gz [default]

Portfile Sync via a Snapshot Tarball

1
2
3
4
#rsync://rsync.macports.org/macports/release/tarballs/ports.tar [default]
https://distfiles.macports.org/ports.tar.gz [default]

https://github.com/macports/macports-ports/archive/master/ports.tar.gz [default]
1
sudo port -d sync
20190325143214-image.png

20190325143214-image.png

更新MacPorts

1
sudo port selfupdate

3.3 安装library

安装OpenCV

1
sudo port install opencv +python27 +openni_sensorkinect

该命令可查看安装OpenCV时的所有可用变量表

1
port variants opencv

安装SciPy

1
sudo port install py27-scipy

3.4 在macports上使用自定义软件包

创建一个文件夹保存自定义Portfiles,其路径为<local_repository>值。

编辑/opt/local/etc/macports/sources.conf 文件,在 rsync://rsync.macports.org/release/ports/ [default]下添加一行

1
2
file://<local_repository>
//file:///Users/wangzulong/mycode/python/customPortfiles

更新macports

1
sudo port selfupdate

3.5 opencv相关modules安装

3.5.1 Contrib modules

opencv_contrib 3.4.3
opencv 3.4.3
注意版本tag一定要选择相同的,否则编译不通过。

在opencv目录下:

1
2
3
4
5
6
7
8
mkdir build && cd build

cmake -D BUILD_opencv_freetype=OFF -DOPENCV_EXTRA_MODULES_PATH=/Users/wangzulong/mycode/python/source/opencv_contrib-3.4.3/modules /Users/wangzulong/mycode/python/source/opencv-3.4.3


make -j5

make install

ld: library not found for -lharfbuzz - lib/libopencv_freetype.3.2.0.dylib Error 1

IPPICV: Download: ippicv

3.5.2 opencv version/functions

[Checking your OpenCV version using Python][8]

1
2
3
4
$ python
>>> import cv2
>>> cv2.__version__
'3.4.3'
20190325143556-image.png

20190325143556-image.png

How to find functions by name in OpenCV

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
>>> import cv2
>>> funcs = dir(cv2)
>>> for f in funcs:
... print(f)
...
ACCESS_FAST
ACCESS_MASK
ACCESS_READ
ACCESS_RW
ACCESS_WRITE
ADAPTIVE_THRESH_GAUSSIAN_C
ADAPTIVE_THRESH_MEAN_C
AGAST_FEATURE_DETECTOR_AGAST_5_8
AGAST_FEATURE_DETECTOR_AGAST_7_12D
AGAST_FEATURE_DETECTOR_AGAST_7_12S
AGAST_FEATURE_DETECTOR_NONMAX_SUPPRESSION
AGAST_FEATURE_DETECTOR_OAST_9_16
AGAST_FEATURE_DETECTOR_THRESHOLD
AKAZE_DESCRIPTOR_KAZE
AKAZE_DESCRIPTOR_KAZE_UPRIGHT
AKAZE_DESCRIPTOR_MLDB
AKAZE_DESCRIPTOR_MLDB_UPRIGHT
AKAZE_create
...
waitKey
warpAffine
warpPerspective
watershed
xfeatures2d
ximgproc
xphoto

4.PIP

  1. 基本

下载
解压
cmd进入目录运行

python setup.py install

文档

2.部分指令

安装PyPI软件

$ pip install [Package]

查看安装文件

$ pip show --files

查看包更新

$ pip list --outdated

升级包

$ pip install --upgrade [Package]

卸载包

$ pip uninstall SomePackage

确定使用pip安装的python软件包的依赖关系

1
2
$ pip install pipdeptree
$ pipdeptree -r -p <package_name>

或者

1
$ pip show <package_name>

5.Jupyter notebook

5.1 安装

pip install jupyter notebook
或 conda install jupyter notebook

5.2 使用

cmd输入jupyter notebook
浏览器打开http://localhost:8888/tree

关闭服务器则在cmd中按两次 Ctrl + C

5.3 Magic 关键字

Magic 关键字是可以在单元格中运行的特殊命令,能让你控制 notebook 本身或执行系统调用(例如更改目录)。

  • 代码计时

使用 Magic 命令 timeit 测算函数的运行时间。
测算整个单元格的运行时间: %%timeit

  • 创建可视化内容

使用 %matplotlib 将 matplotlib 设置为以交互方式在 notebook 中工作。

Magic 命令的前面带有一个或两个百分号(% 或 %%),分别对应行 Magic 命令和单元格 Magic 命令。
行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。

要直接在 notebook 中呈现图形,应将内联后端与命令 %matplotlib inline 一起使用。
高分屏:在 %matplotlib inline 之后使用 %config InlineBackend.figure_format = 'retina' 来呈现分辨率较高的图像。

  • 调试

使用 Magic 命令 %pdb 开启交互式调试器文档

其他magic命令

nbconvert将 notebook 转换为 HTML、Markdown、幻灯片等格式。文档

5.4 快捷键

快捷键 作用
按下A 向上增加空白的cell
按下B 向下增加空白的cell
按下D两次(DD) 删除该cell
按下X 剪贴该cell
按下V 粘贴该cell
按下L 打开、关闭行号
按下M 进入Markdown模式
按下Y 退出Markdown模式,回到代码编辑模式