@@ -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 |
@@ -34,10 +34,15 @@ | |||||
"* 高于 100 万元时, 超过 100 万元的部分按 1%提成, \n", | "* 高于 100 万元时, 超过 100 万元的部分按 1%提成, \n", | ||||
"从键盘输入当月利润 I,求应发放奖金总数?\n", | "从键盘输入当月利润 I,求应发放奖金总数?\n", | ||||
"\n", | "\n", | ||||
"\n", | |||||
"### (4)循环\n", | "### (4)循环\n", | ||||
"输出9x9的乘法口诀表\n", | "输出9x9的乘法口诀表\n", | ||||
"\n", | "\n", | ||||
"### (5)算法\n", | |||||
"\n", | |||||
"### (5)使用while循环实现输出2-3+4-5+6.....+100的和\n", | |||||
"\n", | |||||
"\n", | |||||
"### (6)算法\n", | |||||
"给一个数字列表,将其按照由大到小的顺序排列\n", | "给一个数字列表,将其按照由大到小的顺序排列\n", | ||||
"\n", | "\n", | ||||
"例如\n", | "例如\n", | ||||
@@ -45,72 +50,19 @@ | |||||
"1, 10, 4, 2, 9, 2, 34, 5, 9, 8, 5, 0\n", | "1, 10, 4, 2, 9, 2, 34, 5, 9, 8, 5, 0\n", | ||||
"```\n", | "```\n", | ||||
"\n", | "\n", | ||||
"### (6)应用1\n", | |||||
"### (7)应用1\n", | |||||
"做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?\n", | "做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?\n", | ||||
"\n", | "\n", | ||||
"需要考虑什么是激活码?有什么特性?例如`KR603guyVvR`是一个激活码\n", | "需要考虑什么是激活码?有什么特性?例如`KR603guyVvR`是一个激活码\n", | ||||
"\n", | "\n", | ||||
"### (7)应用2\n", | |||||
"### (8)应用2\n", | |||||
"需要把某个目录下面所有的某种类型的文件找到。\n", | "需要把某个目录下面所有的某种类型的文件找到。\n", | ||||
"例如把`c:`下面所有的`.dll`文件找到\n", | "例如把`c:`下面所有的`.dll`文件找到\n", | ||||
"\n", | "\n", | ||||
"### (8)应用3\n", | |||||
"### (9)应用3\n", | |||||
"你有个目录,里面是程序(假如是C或者是Python),统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。\n", | "你有个目录,里面是程序(假如是C或者是Python),统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。\n", | ||||
"\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": { | "metadata": { |
@@ -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),统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。 | |||||
# | |||||
# |
@@ -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 | |||||
} |
@@ -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) |
@@ -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 | |||||
} |
@@ -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) 画出一个二次函数,同时画出梯形法求积分时的各个梯形 | |||||
# | |||||
# |
@@ -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 | |||||
} |
@@ -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) | |||||
# |
@@ -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) |
@@ -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' | |||||
``` |
@@ -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的启动、停止脚本都在特定文件夹,可能一段时间后,你可能会有很多个虚拟环境散落在系统各处,你可能忘记它们的名字或者位置。 | |||||
@@ -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 | |||||
``` |