Browse Source

Reorginze the program structure

fetches/feikei/master
Shuhui Bu 6 years ago
parent
commit
709ca71d09
26 changed files with 724 additions and 139 deletions
  1. +14
    -0
      References_notes.md
  2. +9
    -57
      exercise/1_python.ipynb
  3. +74
    -0
      exercise/1_python.py
  4. +82
    -0
      exercise/2_numpy.ipynb
  5. +70
    -0
      exercise/2_numpy.py
  6. +37
    -0
      exercise/3_matplotlib.ipynb
  7. +26
    -0
      exercise/3_matplotlib.py
  8. +0
    -82
      knn/digital classification.ipynb
  9. +139
    -0
      knn/knn_classification.ipynb
  10. +73
    -0
      knn/knn_classification.py
  11. BIN
      matplotlib/stinkbug.webp
  12. +0
    -0
      numpy_matplotlib_scipy_sympy/example.png
  13. +0
    -0
      numpy_matplotlib_scipy_sympy/matplotlib_ani1.ipynb
  14. +0
    -0
      numpy_matplotlib_scipy_sympy/matplotlib_ani1.py
  15. +0
    -0
      numpy_matplotlib_scipy_sympy/matplotlib_ani2.ipynb
  16. +0
    -0
      numpy_matplotlib_scipy_sympy/matplotlib_ani2.py
  17. +0
    -0
      numpy_matplotlib_scipy_sympy/matplotlib_full.ipynb
  18. +0
    -0
      numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.ipynb
  19. +0
    -0
      numpy_matplotlib_scipy_sympy/numpy.ipynb
  20. +0
    -0
      numpy_matplotlib_scipy_sympy/scipy.ipynb
  21. +0
    -0
      numpy_matplotlib_scipy_sympy/stockholm_td_adj.dat
  22. +0
    -0
      numpy_matplotlib_scipy_sympy/sympy.ipynb
  23. +16
    -0
      python/tips/README.md
  24. +66
    -0
      python/tips/pip.md
  25. +59
    -0
      python/tips/virtualenv.md
  26. +59
    -0
      python/tips/virtualenv_wrapper.md

+ 14
- 0
References_notes.md View File

@@ -0,0 +1,14 @@
## Notebooks:

machineLearning/10_digits_classification.ipynb

MachineLearningNotebooks/05.%20Logistic%20Regression.ipynb

MachineLearningNotebooks/08.%20Practical_NeuralNets.ipynb


## Exercise
http://sofasofa.io/competitions.php?type=practice
https://www.kaggle.com/competitions

https://github.com/wmpscc/DataMiningNotesAndPractice/blob/master/2.KMeans%E7%AE%97%E6%B3%95%E4%B8%8E%E4%BA%A4%E9%80%9A%E4%BA%8B%E6%95%85%E7%90%86%E8%B5%94%E5%AE%A1%E6%A0%B8%E9%A2%84%E6%B5%8B.md

exercise/exercise.ipynb → exercise/1_python.ipynb View File

@@ -34,10 +34,15 @@
"* 高于 100 万元时, 超过 100 万元的部分按 1%提成, \n",
"从键盘输入当月利润 I,求应发放奖金总数?\n",
"\n",
"\n",
"### (4)循环\n",
"输出9x9的乘法口诀表\n",
"\n",
"### (5)算法\n",
"\n",
"### (5)使用while循环实现输出2-3+4-5+6.....+100的和\n",
"\n",
"\n",
"### (6)算法\n",
"给一个数字列表,将其按照由大到小的顺序排列\n",
"\n",
"例如\n",
@@ -45,72 +50,19 @@
"1, 10, 4, 2, 9, 2, 34, 5, 9, 8, 5, 0\n",
"```\n",
"\n",
"### (6)应用1\n",
"### (7)应用1\n",
"做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?\n",
"\n",
"需要考虑什么是激活码?有什么特性?例如`KR603guyVvR`是一个激活码\n",
"\n",
"### (7)应用2\n",
"### (8)应用2\n",
"需要把某个目录下面所有的某种类型的文件找到。\n",
"例如把`c:`下面所有的`.dll`文件找到\n",
"\n",
"### (8)应用3\n",
"### (9)应用3\n",
"你有个目录,里面是程序(假如是C或者是Python),统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 数值计算\n",
"\n",
"\n",
"### (1)对于一个存在在数组,如何添加一个用0填充的边界?\n",
"例如对一个二维矩阵\n",
"```\n",
"10, 34, 54, 23\n",
"31, 87, 53, 68\n",
"98, 49, 25, 11\n",
"84, 32, 67, 88\n",
"```\n",
"\n",
"变换成\n",
"```\n",
" 0, 0, 0, 0, 0, 0\n",
" 0, 10, 34, 54, 23, 0\n",
" 0, 31, 87, 53, 68, 0\n",
" 0, 98, 49, 25, 11, 0\n",
" 0, 84, 32, 67, 88, 0\n",
" 0, 0, 0, 0, 0, 0\n",
"```\n",
"\n",
"### (2) 创建一个 5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置\n",
"\n",
"\n",
"### (3) 创建一个8x8 的矩阵,并且设置成棋盘样式\n",
"\n",
"\n",
"### (4)求解线性方程组\n",
"\n",
"给定一个方程组,如何求出其的方程解。有多种方法,分析各种方法的优缺点(最简单的方式是消元方)。\n",
"\n",
"例如\n",
"```\n",
"3x + 4y + 2z = 10\n",
"5x + 3y + 4z = 14\n",
"8x + 2y + 7z = 20\n",
"```\n",
"\n",
"编程写出求解的程序\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {

+ 74
- 0
exercise/1_python.py View File

@@ -0,0 +1,74 @@
# -*- coding: utf-8 -*-
# ---
# jupyter:
# jupytext_format_version: '1.2'
# kernelspec:
# display_name: Python 3
# language: python
# name: python3
# language_info:
# codemirror_mode:
# name: ipython
# version: 3
# file_extension: .py
# mimetype: text/x-python
# name: python
# nbconvert_exporter: python
# pygments_lexer: ipython3
# version: 3.5.2
# ---

# # Python & Machine Learning Exercises

# ## Python
#
# ### (1)字符串
# 给定一个文章,找出每个单词的出现次数
#
# ```
# One is always on a strange road, watching strange scenery and listening to strange music. Then one day, you will find that the things you try hard to forget are already gone.
# ```
#
# ### (2)组合
# 有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
#
#
# ### (3) 判断
# 企业发放的奖金根据利润提成。利润(I):
# * 低于或等于 10 万元时,奖金可提 10%;
# * 高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可提成 7.5%;
# * 20 万到 40 万之间时,高于 20 万元的部分,可提成 5%;
# * 40 万到 60 万之间时,高于 40 万元的部分,可提成 3%;
# * 60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5%,
# * 高于 100 万元时, 超过 100 万元的部分按 1%提成,
# 从键盘输入当月利润 I,求应发放奖金总数?
#
#
# ### (4)循环
# 输出9x9的乘法口诀表
#
#
# ### (5)使用while循环实现输出2-3+4-5+6.....+100的和
#
#
# ### (6)算法
# 给一个数字列表,将其按照由大到小的顺序排列
#
# 例如
# ```
# 1, 10, 4, 2, 9, 2, 34, 5, 9, 8, 5, 0
# ```
#
# ### (7)应用1
# 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?
#
# 需要考虑什么是激活码?有什么特性?例如`KR603guyVvR`是一个激活码
#
# ### (8)应用2
# 需要把某个目录下面所有的某种类型的文件找到。
# 例如把`c:`下面所有的`.dll`文件找到
#
# ### (9)应用3
# 你有个目录,里面是程序(假如是C或者是Python),统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
#
#

+ 82
- 0
exercise/2_numpy.ipynb View File

@@ -0,0 +1,82 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 数值计算\n",
"\n",
"\n",
"### (1)对于一个存在在数组,如何添加一个用0填充的边界?\n",
"例如对一个二维矩阵\n",
"```\n",
"10, 34, 54, 23\n",
"31, 87, 53, 68\n",
"98, 49, 25, 11\n",
"84, 32, 67, 88\n",
"```\n",
"\n",
"变换成\n",
"```\n",
" 0, 0, 0, 0, 0, 0\n",
" 0, 10, 34, 54, 23, 0\n",
" 0, 31, 87, 53, 68, 0\n",
" 0, 98, 49, 25, 11, 0\n",
" 0, 84, 32, 67, 88, 0\n",
" 0, 0, 0, 0, 0, 0\n",
"```\n",
"\n",
"### (2) 创建一个 5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置\n",
"\n",
"\n",
"### (3) 创建一个8x8 的矩阵,并且设置成国际象棋棋盘样式(黑可以用0, 白可以用1)\n",
"\n",
"\n",
"### (4)求解线性方程组\n",
"\n",
"给定一个方程组,如何求出其的方程解。有多种方法,分析各种方法的优缺点(最简单的方式是消元方)。\n",
"\n",
"例如\n",
"```\n",
"3x + 4y + 2z = 10\n",
"5x + 3y + 4z = 14\n",
"8x + 2y + 7z = 20\n",
"```\n",
"\n",
"编程写出求解的程序\n",
"\n",
"\n",
"### (5) 翻转一个数组(第一个元素变成最后一个)\n",
"\n",
"\n",
"### (6) 产生一个十乘十随机数组,并且找出最大和最小值\n",
"\n",
"\n",
"## Reference\n",
"* [100 numpy exercises](https://github.com/rougier/numpy-100)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
},
"main_language": "python"
},
"nbformat": 4,
"nbformat_minor": 2
}

+ 70
- 0
exercise/2_numpy.py View File

@@ -0,0 +1,70 @@
# -*- coding: utf-8 -*-
# ---
# jupyter:
# jupytext_format_version: '1.2'
# kernelspec:
# display_name: Python 3
# language: python
# name: python3
# language_info:
# codemirror_mode:
# name: ipython
# version: 3
# file_extension: .py
# mimetype: text/x-python
# name: python
# nbconvert_exporter: python
# pygments_lexer: ipython3
# version: 3.5.2
# ---

# ## 数值计算
#
#
# ### (1)对于一个存在在数组,如何添加一个用0填充的边界?
# 例如对一个二维矩阵
# ```
# 10, 34, 54, 23
# 31, 87, 53, 68
# 98, 49, 25, 11
# 84, 32, 67, 88
# ```
#
# 变换成
# ```
# 0, 0, 0, 0, 0, 0
# 0, 10, 34, 54, 23, 0
# 0, 31, 87, 53, 68, 0
# 0, 98, 49, 25, 11, 0
# 0, 84, 32, 67, 88, 0
# 0, 0, 0, 0, 0, 0
# ```
#
# ### (2) 创建一个 5x5的矩阵,并设置值1,2,3,4落在其对角线下方位置
#
#
# ### (3) 创建一个8x8 的矩阵,并且设置成国际象棋棋盘样式(黑可以用0, 白可以用1)
#
#
# ### (4)求解线性方程组
#
# 给定一个方程组,如何求出其的方程解。有多种方法,分析各种方法的优缺点(最简单的方式是消元方)。
#
# 例如
# ```
# 3x + 4y + 2z = 10
# 5x + 3y + 4z = 14
# 8x + 2y + 7z = 20
# ```
#
# 编程写出求解的程序
#
#
# ### (5) 翻转一个数组(第一个元素变成最后一个)
#
#
# ### (6) 产生一个十乘十随机数组,并且找出最大和最小值
#
#
# ## Reference
# * [100 numpy exercises](https://github.com/rougier/numpy-100)

+ 37
- 0
exercise/3_matplotlib.ipynb View File

@@ -0,0 +1,37 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Matplotlib\n",
"\n",
"\n",
"## (1) 画出一个二次函数,同时画出梯形法求积分时的各个梯形\n",
"\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
},
"main_language": "python"
},
"nbformat": 4,
"nbformat_minor": 2
}

+ 26
- 0
exercise/3_matplotlib.py View File

@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# ---
# jupyter:
# jupytext_format_version: '1.2'
# kernelspec:
# display_name: Python 3
# language: python
# name: python3
# language_info:
# codemirror_mode:
# name: ipython
# version: 3
# file_extension: .py
# mimetype: text/x-python
# name: python
# nbconvert_exporter: python
# pygments_lexer: ipython3
# version: 3.5.2
# ---

# # Matplotlib
#
#
# ## (1) 画出一个二次函数,同时画出梯形法求积分时的各个梯形
#
#

+ 0
- 82
knn/digital classification.ipynb View File

@@ -1,82 +0,0 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Digitial Classification\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Automatically created module for IPython interactive environment\n",
"KNN score: 0.953661\n",
"LogisticRegression score: 0.908248\n"
]
}
],
"source": [
"print(__doc__)\n",
"\n",
"from sklearn import datasets, neighbors, linear_model\n",
"\n",
"digits = datasets.load_digits()\n",
"X_digits = digits.data\n",
"y_digits = digits.target\n",
"\n",
"n_samples = len(X_digits)\n",
"n_train = int(0.4 * n_samples)\n",
"\n",
"X_train = X_digits[:n_train]\n",
"y_train = y_digits[:n_train]\n",
"X_test = X_digits[n_train:]\n",
"y_test = y_digits[n_train:]\n",
"\n",
"knn = neighbors.KNeighborsClassifier()\n",
"logistic = linear_model.LogisticRegression()\n",
"\n",
"print('KNN score: %f' % knn.fit(X_train, y_train).score(X_test, y_test))\n",
"print('LogisticRegression score: %f' % logistic.fit(X_train, y_train).score(X_test, y_test))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References\n",
"* [Supervised learning: predicting an output variable from high-dimensional observations](http://scikit-learn.org/stable/tutorial/statistical_inference/supervised_learning.html)\n",
"* [Digits Classification Exercise](http://scikit-learn.org/stable/auto_examples/exercises/plot_digits_classification_exercise.html)\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 2
}

+ 139
- 0
knn/knn_classification.ipynb
File diff suppressed because it is too large
View File


+ 73
- 0
knn/knn_classification.py View File

@@ -0,0 +1,73 @@
# ---
# jupyter:
# jupytext_format_version: '1.2'
# kernelspec:
# display_name: Python 3
# language: python
# name: python3
# language_info:
# codemirror_mode:
# name: ipython
# version: 3
# file_extension: .py
# mimetype: text/x-python
# name: python
# nbconvert_exporter: python
# pygments_lexer: ipython3
# version: 3.5.2
# ---

# # KNN Classification
#
#
#

# +
% matplotlib inline

import matplotlib.pyplot as plt
from sklearn import datasets, neighbors, linear_model

# load data
digits = datasets.load_digits()
X_digits = digits.data
y_digits = digits.target

print("Feature dimensions: ", X_digits.shape)
print("Label dimensions: ", y_digits.shape)


# +
# plot sample images
nplot = 10
fig, axes = plt.subplots(nrows=1, ncols=nplot)

for i in range(nplot):
img = X_digits[i].reshape(8, 8)
axes[i].imshow(img)
axes[i].set_title(y_digits[i])


# +
# split train / test data
n_samples = len(X_digits)
n_train = int(0.4 * n_samples)

X_train = X_digits[:n_train]
y_train = y_digits[:n_train]
X_test = X_digits[n_train:]
y_test = y_digits[n_train:]


# +
# do KNN classification
knn = neighbors.KNeighborsClassifier()
logistic = linear_model.LogisticRegression()

print('KNN score: %f' % knn.fit(X_train, y_train).score(X_test, y_test))
print('LogisticRegression score: %f' % logistic.fit(X_train, y_train).score(X_test, y_test))
# -

# ## References
# * [Digits Classification Exercise](http://scikit-learn.org/stable/auto_examples/exercises/plot_digits_classification_exercise.html)
#

BIN
matplotlib/stinkbug.webp View File

Before After

matplotlib/example.png → numpy_matplotlib_scipy_sympy/example.png View File


matplotlib/matplotlib_ani1.ipynb → numpy_matplotlib_scipy_sympy/matplotlib_ani1.ipynb View File


matplotlib/matplotlib_ani1.py → numpy_matplotlib_scipy_sympy/matplotlib_ani1.py View File


matplotlib/matplotlib_ani2.ipynb → numpy_matplotlib_scipy_sympy/matplotlib_ani2.ipynb View File


matplotlib/matplotlib_ani2.py → numpy_matplotlib_scipy_sympy/matplotlib_ani2.py View File


matplotlib/Lecture-4-Matplotlib.ipynb → numpy_matplotlib_scipy_sympy/matplotlib_full.ipynb View File


matplotlib/tutorial matplotlib.ipynb → numpy_matplotlib_scipy_sympy/matplotlib_simple_tutorial.ipynb View File


numpy_scipy_sympy/Numpy.ipynb → numpy_matplotlib_scipy_sympy/numpy.ipynb View File


numpy_scipy_sympy/Scipy.ipynb → numpy_matplotlib_scipy_sympy/scipy.ipynb View File


numpy_scipy_sympy/stockholm_td_adj.dat → numpy_matplotlib_scipy_sympy/stockholm_td_adj.dat View File


numpy_scipy_sympy/Sympy.ipynb → numpy_matplotlib_scipy_sympy/sympy.ipynb View File


+ 16
- 0
python/tips/README.md View File

@@ -0,0 +1,16 @@
# Pyton技巧


## Python的包管理工具: `pip`
由于python是模块化的开发,因此能够能够利用其他人写的现成的包来快速的完成特定的任务。为了加快包的安装,python有很多包管理的工具,其中`pip`是目前使用最多的包管理工具。

* [pip的安装、使用等](pip.md)

但是由于直接使用pip去访问国外的网站慢,所以需要设置好pip的镜像,从而加快包的安装


## Python的虚拟环境: `virtualenv`
由于Python可以通过`pip`工具方便的安装包,因此极大的加快了程序编写的速度。但由于公开的包很多,不可避免的带来了包依赖导致的无法安装某些程序的问题。针对这个问题可以使用`docker`来构建一个隔离的环境来安装所需要的包,但有的时候还是希望在本机安装,因此需要使用`virtualenv`工具来安装虚拟的python环境。

* [virtualenv的安装、使用](virtualenv.md)
* [virtualenv便捷管理工具:virtualenv_wrapper](virtualenv_wrapper.md)

+ 66
- 0
python/tips/pip.md View File

@@ -0,0 +1,66 @@
# Python的包管理工具: `pip`

由于python是模块化的开发,因此能够能够利用其他人写的现成的包来快速的完成特定的任务。为了加快包的安装,python有很多包管理的工具,其中`pip`是目前使用最多的包管理工具。

## 1. 安装pip
在ubuntu系统可以直接安装python-pip

```
# Python 3的pip (建议安装Python3)
sudo apt-get install python3-pip

# Python 2的pip
sudo apt-get install python3-pip
```

Upgrade pip
```
sudo pip3 install --upgrade pip
```

安装之后,可以输入`pip`查看简要的使用说明。**需要注意的是,通过系统安装的pip,在使用pip安装包的时候,需要用sudo来执行。**


## 2. pip的命令

### 2.1 查找一个给定名字的package
```
pip search numpy
```
会找到很多跟numpy有关联的包,可以拷贝每一行最前面的那个包名字,通过安装命令去安装。


### 2.2 安装一个给定的package
```
$ pip install numpy
```
安装`numpy`这个包,同时它的依赖也自动安装到系统。

使用一个给定的URL安装包
```
$ pip -f URL install PACKAGE # 从指定URL下载安装包
```


### 2.3 升级一个包
```
$ pip -U install PACKAGE # 升级包
```

### 2.4 列出当前系统中已经安装的包
```
$ pip list
```

查看一个安装好的包的信息
```
$ pip show numpy
```


## 3. 设置pip的镜像
但是由于直接使用pip去访问国外的网站慢,所以需要设置好pip的镜像,从而加快包的安装。目前国内有很多pip包镜像,选择其中一个就可以加快很多安装速度

```
pip config set global.index-url 'https://mirrors.ustc.edu.cn/pypi/web/simple'
```

+ 59
- 0
python/tips/virtualenv.md View File

@@ -0,0 +1,59 @@
# virtualenv manual


## 1. Install
virtualenv 是一个创建隔绝的Python环境的工具。virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包。
```
pip install virtualenv
```

如果当前pip是python2的话,则后续默认创建的虚拟环境就是python2;否则是python3的


## 2. 创建虚拟环境

创建一个虚拟环境
```
$ mkdir -p ~/virtualenv; cd ~/virtualenv

$ virtualenv venv # venv 是虚拟环境的目录名
```

virtualenv venv 将会在当前的目录中创建一个文件夹,包含了Python可执行文件,以及 pip 库的一份拷贝,这样就能安装其他包了。虚拟环境的名字(此例中是 venv )可以是任意的;若省略名字将会把文件均放在当前目录。

在任何你运行命令的目录中,这会创建Python的拷贝,并将之放在叫做 venv 的文件中。

你可以选择使用一个Python解释器:
```
$ virtualenv -p /usr/bin/python2.7 venv    # -p参数指定Python解释器程序路径
```


## 3. 使用虚拟环境

要开始使用虚拟环境,其需要被激活:
```
$ source ~/virtualenv/venv/bin/activate   
```

从现在起,任何你使用pip安装的包将会放在 venv 文件夹中,与全局安装的Python隔绝开。

像平常一样安装包,比如:
```
$ pip install requests
```


## 4. 如果你在虚拟环境中暂时完成了工作,则可以停用它:
```
$ . venv/bin/deactivate
```
这将会回到系统默认的Python解释器,包括已安装的库也会回到默认的。


## 5. 删除一个虚拟环境
要删除一个虚拟环境,只需删除它的文件夹。(执行 rm -rf venv )。


这里virtualenv 有些不便,因为virtual的启动、停止脚本都在特定文件夹,可能一段时间后,你可能会有很多个虚拟环境散落在系统各处,你可能忘记它们的名字或者位置。


+ 59
- 0
python/tips/virtualenv_wrapper.md View File

@@ -0,0 +1,59 @@
# virtualenvwrapper

鉴于virtualenv不便于对虚拟环境集中管理,所以推荐直接使用virtualenvwrapper。 virtualenvwrapper提供了一系列命令使得和虚拟环境工作变得便利。它把你所有的虚拟环境都放在一个地方。


安装virtualenvwrapper(确保virtualenv已安装)
```
pip install virtualenvwrapper
pip install virtualenvwrapper-win  #Windows使用该命令
```


安装完成后,在~/.bashrc写入以下内容

```
# virtualenv
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export WORKON_HOME=/home/bushuhui/virtualenv
source /usr/local/bin/virtualenvwrapper.sh 
```
其中VIRTUALENVWRAPPER_PYTHON指定了使用那个python作为解释器


## 1.创建虚拟环境 mkvirtualenv

```
mkvirtualenv venv   
```
这样会在WORKON_HOME变量指定的目录下新建名为venv的虚拟环境。
若想指定python版本,可通过"--python"指定python解释器
```
mkvirtualenv --python=/usr/local/python3.5.3/bin/python venv
```

## 2. 基本命令  

查看当前的虚拟环境目录
```
[root@localhost ~]# workon
py2
py3
```

切换到虚拟环境
```
[root@localhost ~]# workon py3
(py3) [root@localhost ~]#
```

退出虚拟环境
```
(py3) [root@localhost ~]# deactivate
[root@localhost ~]#
```

删除虚拟环境
```
rmvirtualenv venv
```

Loading…
Cancel
Save