标签归档:Linux

ubuntu 14.04 下利用apt-get方式安装opencv

ubuntu 14.04 下利用apt-get方式安装OpenCV

标签(空格分隔): Linux学习 OpenCV


1.前言

相比于源代码方式安装opencv,通过apt方式安装过程步骤简单些,消耗的时间也少一些。通过apt方式安装没有自动生成opencv.pc文件,所以在编写makefile文件时不能直接使用pkg-config工具,而需要逐个指定opencv_core、opencv_imgproc等动态链接库!

2.安装方法

  • 更新ubtuntu系统软件源
sudo apt-get update
  • 安装opencv
sudo apt-get install libcv-dev
  • 这个安装过程大概需要几分钟,安装完成后得到如下结果
    ubuntu 14.04 下利用apt-get方式安装opencv

3. opencv被安装在了哪里?

3.1 opencv的安装源文件

  • apt-get install **这样的命令会下载文件放在 /var/cache/apt/archives目录下,然后安装。可以看到,opencv相关的.deb文件都在该目录下;如下图所示,原始的/var/cache/apt/archives目录下只有文件夹partial和文件lock,但由于此时下载了opencv的相关安装文件,发现该文件夹下多个大量的deb安装文件!
    ubuntu 14.04 下利用apt-get方式安装opencv

  • 实际上,执行完以上的安装过程,这些archives路径下的文件是可以直接删除的!因为相关的安装已经结束,不再需要安装文件了

    • 安装上面这种apt-get install的方式,会使得/var/cache/apt/archives这个目录所占空间会越来越大
    • 但幸运的是apt提供了相应的管理工具apt-get clean来删除文件目录/var/cache/apt/archives/和文件目录 /var/cache/apt/archives/partial/下所有包(锁定的除外)。
    • 执行举例:
      执行如下命令
      ubuntu 14.04 下利用apt-get方式安装opencv
      可以发现,刚刚下载的所有关于opencv的文件都被删除了
      ubuntu 14.04 下利用apt-get方式安装opencv

3.2 opencv相关的头文件的安装位置

opencv相关的头文件被安装到/usr/lib目录中,该目录是linux默认头文件查找路径。

3.3 opencv的相关动态链接库的安装位置

  • linux下的动态链接库文件即.so文件

  • opencv的相关动态链接库被安装到/usr/lib目录中。这些动态链接库包括:
    【opencv_calib3d】——相机校准和三维重建
    【opencv_core】——核心模块,绘图和其他辅助功能
    【opencv_features2d】——二维特征检测
    【opencv_flann】——快速最邻近搜索
    【opencv_highgui】——GUI用户界面
    【opencv_imgproc】——图像处理
    【opencv_legacy】——废弃部分
    【opencv_ml】——机器学习模块
    【opencv_objdetect】——目标检测模块
    【opencv_ocl】——运用OpenCL加速的计算机视觉组件模块
    【opencv_video】——视频分析组件

  • 下图是/usr/lib文件夹中与opencv相关的文件,例如,第一个和第二个文件分别为机器学习模块对应的静态态链接库文件(libopencv_ml.a)和动态链接库文件(libopencv_ml.so)
    ubuntu 14.04 下利用apt-get方式安装opencv

3.4 linux下的opencv和windows下的opencv文件

  • windows下下载得到的opencv解压文件包含2个文件夹:source+build

    • source:opencv的源代码(opencv是开源的),下面的build文件夹下的各种库就是在这些源代码的基础上利用cMake得到的(实际上,该source文件夹除了可以编译得到下面的build中的动态链接库和静态链接库外,在实际调用opencv相关库时,并不需要!)
    • build:存放的opencv**预编译好的各种库(**DLL(动态链接库)lib库(静态链接库)),对于使用opencv的使用者来说,只使用该文件夹就够了,不需要自己利用opencv的源代码重新编译得到这些库
  • linux下载得到的是.deb解压缩后也可以得到动态链接库和静态链接库

    在ubuntu中, .so文件即为动态链接库文件,对应于windows下的dll文件
    在ubuntu中, .a文件对应于windows下的lib文件;实际上,该文件就是普通的函数通过编译之后得到(在高翔的SLAM教程第2章有一个关于如何编译得到静态链接库的简单小例子)

实际上,无论是在任何操作系统下,我们需要使用opencv的相关库时,使用的都仅仅是它的动态链接库和静态链接库

4. 测试代码

4.1 源码

  • 建立名称为test.cpp的c++文件,内容如下
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main (int argc, char **argv)
{
    Mat image, image_gray;
    image = imread(argv[1], CV_LOAD_IMAGE_COLOR );
    if (argc != 2 || !image.data) {
        cout << "No image data/n";
        return -1;
    }

    cvtColor(image, image_gray, CV_RGB2GRAY);
    namedWindow("image", CV_WINDOW_AUTOSIZE);
    namedWindow("image gray", CV_WINDOW_AUTOSIZE);

    imshow("image", image);
    imshow("image gray", image_gray);

    waitKey(0);
    return 0;
}
  • 建立名称为Makefile的文件,输入如下内容
CC = g++
# 可执行文件
TARGET = test
# C文件
SRCS = test.cpp
# 目标文件
OBJS = $(SRCS:.cpp=.o)
# 库文件
DLIBS = -lopencv_core -lopencv_imgproc -lopencv_highgui
# 链接为可执行文件
$(TARGET):$(OBJS)
    $(CC) -o $@ $^ $(DLIBS)  
clean:
    rm -rf $(TARGET) $(OBJS)
# 编译规则 $@代表目标文件 $< 代表第一个依赖文件
%.o:%.cpp
    $(CC) -o $@ -c $<

××××××
注意1:
12行、14行、17行前面为Tab,而非空格,否则会出现“makefile:12: *** 遗漏分隔符 。 停止。”这样的错误

ubuntu 14.04 下利用apt-get方式安装opencv

注意2:
由于示例中使用了opencv中的核心部分(opencv_core)、图像处理部分(opencv_imgproc)和GUI部分(opencv_highgui),所以依次增加opencv_core、opencv_imgproc、opencv_highgui动态链接库。
即由DLIBS = -lopencv_core -lopencv_imgproc -lopencv_highgui语句实现

4.2 make

cd 文档  # 进入程序所在目录
make 

ubuntu 14.04 下利用apt-get方式安装opencv

产生了两个文件:test文件和test.o文件
ubuntu 14.04 下利用apt-get方式安装opencv

4.3 测试程序

./test lena.bmp

运行结果
ubuntu 14.04 下利用apt-get方式安装opencv

上面程序test的作用就是将输入的图像转换为灰度图像,可以看到,程序实现了该功能,也就证明了opencv安装成功

当然,这里的Makefile文件非常重要,具体的使用方式还没明白,有待学习

另外,cmake和make的区别是什么呢?发现大部分都是使用Cmake工具,需要写CMakeLists.txt文件,具体还有待学习


参考文献
[1] 树莓派学习笔记——apt方式安装OpenCV
[2] apt-get下载的文件放在哪个目录

Docker学习系列(一):windows下安装docker

本文目录如下:


windows下安装docker的方法应该参考docker官网,之前参考的是网上其他人翻译的博客,出了一些问题,后来发现,是由于docker更新速度较快,安装官网的方法最为妥当!

下面引用Docker 中文指南中的几个提示:

提示1:Docker 已经在windows7.1和windows 8上通过测试,当然它也可以在低版本的windows上使用。但是你的处理器必须支持硬件虚拟化。

提示2:Docker 引擎使用的是Linux内核特性,所以我们需要在 Windows 上使用一个轻量级的虚拟机 (VM) 来运行 Docker。我们使用 Windows的Docker客户端来控制 Docker 虚拟化引擎的构建、运行和管理 。

提示3:为了简化这个过程,我们设计了一个叫 Boot2Docker 的应用程序,你可以通过它来安装虚拟机和运行 Docker。

提示4:虽然你使用的是 Windows 的 Docker 客户端,但是 docker 引擎容器依然是运行在 Linux 宿主主机上(现在是通过Virtual box)。直到我们开发了 windows 版本的 Docker 引擎,你只需要在你的 Windows 主机上启动一个 Linux 容器。


参考Install Docker for Windows,即按照该网站的步骤一步步按照即可,该网站的教程非常详细

1.windows按照docker的基本要求

(1)64为操作系统,win7或者更高
(2)支持“ Hardware Virtualization Technology”,并且,“virtualization ”可用

2.具体安装步骤

即安装Docker Toolbox,同时还附加安装

  • Docker Client for Windows
  • Docker Toolbox management tool and ISO
  • Oracle VM VirtualBox
  • Git MSYS-git UNIX tools
    不用担心,下载的Docker Toolbox已经完全包含了这几个软件,直接安装就可以了

1.进入Docker Toolbox的下载网页,选择windows版本下载
Docker学习系列(一):windows下安装docker
2. 下载完成后,双击安装文件
3. 一路Next,接受所有默认安装
Docker学习系列(一):windows下安装docker
Docker学习系列(一):windows下安装docker
Docker学习系列(一):windows下安装docker
Docker学习系列(一):windows下安装docker
Docker学习系列(一):windows下安装docker
Docker学习系列(一):windows下安装docker

注意:在安装过程中,会出现几个其他的安装过程,如Ocracle Corporation等系列软件,全部选择安装即可,下面是几个小例子:
Docker学习系列(一):windows下安装docker
Docker学习系列(一):windows下安装docker
另外,如果你安装了360,它可能会阻止程序的安装,应该注意允许程序安装
Docker学习系列(一):windows下安装docker
4. 最后Finish
Docker学习系列(一):windows下安装docker
5. 整个安装过程非常简单,安装完成后,可以在桌面得到如下的三个图标:
Docker学习系列(一):windows下安装docker

3.开始使用

1.点击Docker Quickstart Terminal图标,从而打开一个Docker Toolbox terminal
Docker学习系列(一):windows下安装docker
– 打开terminal后,terminal会自动进行一些设置,需要点时间,全部完成后,会出现如下的结果
Docker学习系列(一):windows下安装docker
3.在$后输入各种docker命令就可以使用docker了
注:不需要像ubuntu中那样使用sudo!
例如:
(1)查看docker的版本信息

docker info

Docker学习系列(一):windows下安装docker
(2)登陆docker Hub的账号

docker login

然后,输入用户名和密码,例如
Docker学习系列(一):windows下安装docker
个人觉得:在使用docker时,是否登陆没有特别大的影响,只不过是,如果登陆了,就可以向docker hub上push自己的镜像了

4.安装远程连接工具连接docker

按照上面方法打开Docker Toolbox terminal后,发现在该终端中,无法进行复制、粘贴等操作,使用起来非常不方便,所以,这里参考zistxym的博文,安装远程连接工具SecureCRT

  • 下载SecureCRT
    地址:绿盟SecureCRT绿色版免安装,不知道为什么,有时这两个链接提示有病毒,所以,再提供一个百度云盘的链接,提取码:rm3g
  • 运行SecureCRT
    Docker学习系列(一):windows下安装docker
  • 连接docker
    Docker学习系列(一):windows下安装docker
    Docker学习系列(一):windows下安装docker
    注:默认的用户名和密码是: docker/tcuser

  • 使用SecureCRT即与使用Docker Quickstart Terminal的作用相同
    Docker学习系列(一):windows下安装docker
    Docker学习系列(一):windows下安装docker

    • 再使用SecureCRT连接docker时,必须要先启动Docker Quickstart Terminal
  • 关于SecureCRT的几点设置
    (1)使用中发现,secureCRT的鼠标右键功能默认是粘贴的功能,用起来和windows系统的风格不一致,如果要改为右键为弹出文本操作菜单功能,方便对选择的内容做拷贝编辑操作,可以在options菜单—-》global options——》terminal——-》mouse功能块处将paste on处改为:right button
    Docker学习系列(一):windows下安装docker
    此时,再鼠标右键时,弹出了文本操作功能的菜单,如下:
    Docker学习系列(一):windows下安装docker
    (2)更改secureCRT的字体和背景
    Docker学习系列(一):windows下安装docker
    Docker学习系列(一):windows下安装docker
    仅是更改当前section的字体
    Docker学习系列(一):windows下安装docker

5.安装中遇到的问题

全部安装完成后,打开Docker Quickstart Terminal,可能会出现如下错误:
Docker学习系列(一):windows下安装docker
这是因为电脑没有开启支持VT-X/AMD-v功能,即没有开启虚拟化技术,需要重启电脑,去BIOS里开启该功能

在利用image生成镜像时,发生了如下错误

flag provided but not defined:

以为是因为docekr service和client的版本不同,各种查询折腾,也没有成功,最后发现,居然是命令中-v和路径之间少了空格!都怪自己没有仔细查看错误提醒
Docker学习系列(一):windows下安装docker
~~~~~~~~~~
Docker学习系列(一):windows下安装docker

6.Docker的更新

如果本机安装的docker过期了,也就是有新版本的docker发布时,应该对本机的docker进行更新,否则很可能会影响它的继续使用,那么,对本机的docker进行更新可以安装下述方式:
(1)打开Docker Quickstart Terminal终端
(2)输入命令:docker-machine upgrade default
会开始自动更新本机的docker,如下图所示
Docker学习系列(一):windows下安装docker
(3)查看docker版本

docker version

Docker学习系列(一):windows下安装docker

Docker学习系列(一):windows下安装docker

7.Docker中的jupyter

我使用的image中带有jupyter,但发现按照ubuntu下的使用方法,即进入容器后,打开http://0.0.0.0:8888/无法打开Jupyter,经过一番查询才终于找到正解,原来jupyter的image中就有明确说明,但没有想到去那里查询!

具体方法:
(1)打开boot2docker,输入docker-machine ip,会返回一个IP地址,例如

$ docker-machine ip myjupytermachine
192.168.99.104

(2)在浏览器中打开http://192.168.99.104:8888,即可打开jupyter
而不是与ubuntu中一样的http://localhost:8888 (http://0.0.0.0:8888/)

8.windows下使用docker的常用命令

详细内容与ubuntu下的使用方法类似,见Docker学习系列(三):Ubuntu下使用Docker的基本指令记录及一些注意事项,但为了查阅方便,这里再单独列举

  • 查看本机images
docker images
  • 查看本机运行的container
docker ps
  • 从dockerhub上pull 镜像
docker pull 镜像名称
  • 利用image运行container:
docker run -it --rm -p 8888:8888 -v /c/Users/tingting/dropbox/code:/root/opt/workspace -v /c/Users/tingting/dropbox/data:/root/data tingtinglu/caffe_mxnet

(1)利用参数 -v
(2)冒号前为宿主机目录,必须为绝对路径
/c/Users/tingting/dropbox/code:
本机的C:/Users/tingting/dropbox/code文件夹
/c/Users/tingting/dropbox/data
本机的C:/Users/tingting/dropbox/data文件夹
(3)冒号后为镜像内挂载的路径
/root/opt/workspace
docker中的文件夹/root/opt/workspace
/root/data
docker中的文件夹/root/data
(4)这里的本机文件夹为c盘,那么,能否为d盘呢?
测试:

docker run -it --rm -p 8888:8888 -v /d/Dropbox/code:/root /opt/workspace -v /d/Dropbox/data:/root/data tingtinglu/caffe_mxnet

发现并不可行!这是因为目前,windows下只支持c盘下的文件夹映射

Ubuntu下如何安装TensorFlow

本文目录


1.引言

TensorFlow = Tensor(向量)+Flow(流)=”张量在网络图中流动”!

主要参考:
[1] Tensorflow官网Tutorials
[2] 极客学院对Tensorflow官网教程的翻译

官方提供了5种安装tensorflow的方法:

  • Pip install: Install TensorFlow on your machine, possibly upgrading previously installed Python packages. May impact existing Python programs on your machine.
  • Virtualenv install: Install TensorFlow in its own directory, not impacting any existing Python programs on your machine.
  • Anaconda install: Install TensorFlow in its own environment for those running the Anaconda Python distribution. Does not impact existing Python programs on your machine.
  • Docker install: Run TensorFlow in a Docker container isolated from all other programs on your machine.
  • Installing from sources: Install TensorFlow by building a pip wheel that you then install using pip.

几点说明:
1. 由于在使用Tensorflow时,可以直接python调用,所以,这里决定使用python学习tensorflow
2. 使用python,jupyter notebook是一个不可或缺的工具,所以,本文还将记录如何在ubuntu下安装jupyter
3. 这里主要安装python2.7版本的相关组件

2. 基于Anaconda的tensorflow安装

2.1 下载linux版本的Anaconda安装包

Ubuntu下如何安装TensorFlow
下载地址:https://www.continuum.io/downloads
这里选择64位linux的Python 2.7版本
点击下载,下载完成后,得到Anaconda2-4.0.0-Linux-x86_64.sh安装文件

2.2 安装Anaconda

  • 打开terminal,输入如下命令,然后回车
    bash /home/tingting/Downloads/Anaconda2-4.0.0-Linux-x86_64.sh

    这里的/home/tingting/Downloads/是存放Anaconda2-4.0.0-Linux-x86_64.sh的路径

  • 阅读license,一步步回车阅读(出现more时通过回车往下看)
    Ubuntu下如何安装TensorFlow
    Ubuntu下如何安装TensorFlow

  • 输入yes,表示接受license
    Ubuntu下如何安装TensorFlow

  • 设置安装路径,这里使用默认安装路径,直接输入回车即可
    Ubuntu下如何安装TensorFlow

  • 开始自动安装过程
    Ubuntu下如何安装TensorFlow

  • 确认是否将Anaconda的安装路径添加到环境变量中,输入yes
    Ubuntu下如何安装TensorFlow
    关于这里一定要注意:

    如果在安装过程中,该步没有选择yes,那么Anaconda的安装路径不会被添加到环境变量中,安装结束后会出现如下信息:

    Do you wish the installer to prepend the Anaconda2 install location
    to PATH in your /home/tingting/.bashrc ? [yes|no]
    [no] >>>
    You may wish to edit your .bashrc or prepend the Anaconda2 install location:
    $ export PATH=/home/tingting/anaconda2/bin:$PATH
    Thank you for installing Anaconda2!

    当时也没有注意这个信息,没有管,结果安装完anaconda后,发现根本不能使用,才注意到这条信息,原来,Anaconda的bin路径并没有被添加到PAHT环境变量中,所以需要在命令行中输入如下命令:
    export PATH=/home/tingting/anaconda2/bin:$PATH
    即将anaconda的bin路径添加到环境变量PATH中

  • 安装完成
    Ubuntu下如何安装TensorFlow
    这里可以看到,notebooks和一些python包都被成功安装了,但对于环境变量的更改,必须要新打开一个terminal才能生效,否则,相关的指令都不会被认识
    Ubuntu下如何安装TensorFlow

  • 打开新的terminal,输入Jupyter notebook,发现jupyter被成功安装了
    Ubuntu下如何安装TensorFlow

  • 打开浏览器:http://localhost:8888/tree(可以看到安装了python 2的kernel)
    Ubuntu下如何安装TensorFlow

3. 利用anaconda安装tensorflow

3.1 建立一个 conda 计算环境

  • Create a conda environment called tensorflow:

    conda create -n tensorflow python=2.7

    Ubuntu下如何安装TensorFlow

3.2 激活环境,使用 conda 安装 TensorFlow

  • Activate the environment and use pip to install TensorFlow inside it.

    source activate tensorflow

    Ubuntu下如何安装TensorFlow

3.3 安装tensorflow

  • 安装

    pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl

    Ubuntu下如何安装TensorFlow

    之前在虚拟机中的ubutnu下安装tensorflow,就在这一步折腾了2天,就是不成功,每次都是timeout等各种问题,这次在双系统的机器上,瞬间就装好了,实在不知道之前的失败是因为虚拟机还是网速的问题

  • 安装成功后,每次使用 TensorFlow 的时候需要激活 conda 环境,可以看到,在正常情况下,是anaconda的bin路径在环境变量中,但激活conda-tensorflow环境后,环境变量中存储的是tensorflow下的bin路径
    Ubuntu下如何安装TensorFlow

  • 测试tensorflow是否安装成功
    (1) 激活conda环境
    (2)进入python
    (3)import tensorflow
    整个过程比较顺利,tensorflow被成功import了
    Ubuntu下如何安装TensorFlow

3.4 如何在jupyter中使用tensorflow

(1) 出现了问题
安装如上方法安装了jupyter和tensorflow,结果,利用jupyter无法使用tensorflow
Ubuntu下如何安装TensorFlow
也没有查到特别有针对性的解决这个问题的资料,好像是因为jupyter的安装路径和tensorflow的路径之间的问题,具体的现在还不是很清楚

(2)如何解决?
应该是在conda的tensorflow环境下没有jupyter,它无法使用之前anaconda安装的jupyter,那么,简单粗暴的方法就是在当前的conda-tensorflow环境下,再安装一次jupyter:

  • 打开terminal
  • 激活conda tensorflow环境:source activate tensorflow
  • 安装notebook:conda install ipython
  • 安装jupyter:conda install jupyter
  • 安装完成,仍在conda tensorflow的环境下,输入jupyter notebook,打开http://localhost:8889/tree#
  • import tensorflow,发现tensorflow可以使用了

参考:http://stackoverflow.com/questions/35771285/using-tensorflow-through-jupyter-python-3

(3)两个jupyter

  • 在正常的ternimal中打开的是之前在安装anacodna时安装的jupyter,在正常的terminal下 查看jupyter的安装路径
    which ipyhon
    Ubuntu下如何安装TensorFlow
    它在anaconda的路径下的bin文件夹中
  • 在conda tensorflow环境下打开的jupyter是在conda tensorflow环境下新安装的tensorflow,与上面的jupyter不同
    它在conda的env下的tensorflow的bin文件夹下
  • 从下图可以想起地看到,两个jupyter的安装路径完成不同
    Ubuntu下如何安装TensorFlow
  • 后续如果需要在使用tensorflow时使用其他的库,也一定要在对应的conda环境下安装,否则指定的库找不到。

(4) 缺少模块及安装
– ImportError: no module named Image, ImportError: no module named PIL
解决:conda install pillow

4. 总结

(1) 下载安装anaconda,与本文的第2部分同样目的,只不过通过命令行实现

#安装anaconda,从https://www.continuum.io下载
mkdir anaconda2  #在个人目录下创建Aanconda目录
cd anaconda2  #进入目录
wget http://repo.continuum.io/archive/Anaconda2-4.0.0-Linux-x86.sh  #下载anaconda的安装包,利用wget工具
chmod +x Anaconda3-2.5.0-Linux-x86_64.sh  #更改权限(增加可执行权限),使该文件可被执行,
./Anaconda2-4.0.0-Linux-x86.sh  #执行安装文件,或者使用bash Anaconda2-4.0.0-Linux-x86.sh 

(2) 在conda下创建环境,之后的所以操作都部署在该环境下

conda create -n tensorflow python=2.7 #创建tensorflow环境
activate conda tensorflow  #激活tensorflow环境
conda install ipython  #安装notebook
conda install jupyter  #安装jupyter
jupyter notebook #启动jupyter

6.利用Docker安装tensorflow

利用这种方法可以实现在windows上使用tensorflow!具体步骤如下:

6.1 安装docker

在windows7下安装docekr,具体方法见之前的博文:Docker学习系列(一):windows下安装docker

6.2 创建tensorflow的image

安装好docker后,接下来,就可以创建包含tensorflow的image了,有两种方案
(1) 从dockerhub上pull别人的image
例如:

docker pull tensorflow/tensorflow
docker pull xblaster/tensorflow-jupyter
docker pull satoshun/tensorflow-notebook

(2)自己书写Dockerfile,然后,在本机编译dockerfile,生成image,对于这种方法,本人还不会,以后有待研究


7.安装过程中的一些小问题记录

注1:安装过程中各种问题
安装过程中,好像是不小心更改了环境变量,导致所有命令都不能使用,那么,可以使用如下命令export PATH=/usr/bin:/bin
注2:在安装过程中发现,例如如上命令总是无法安装tensorflow,会出现网络连接错误的问题,试了好多遍都不行,不知道是不是因为在虚拟机中latern使用不好的问题,所以,最后,只能通过如下方式
(1)在本机下载tensorflow-0.8.0-cp27-none-linux_x86_64.whl
地址为:https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
(2)将下载的tensorflow-0.8.0-cp27-none-linux_x86_64.whl文件放置在共享文件夹中
(3)在虚拟机的ubuntu的terminal中,cd到放置tensorflow-0.8.0-cp27-none-linux_x86_64.whl的路径(即/home/share/),使用如下命令安装tensorflow(即相当于离线安装了)

sudo pip install --upgrade tensorflow-0.8.0-cp27-none-linux_x86_64.whl

注3:怎么向某个文件中填写内容?举例:如何向sources.list文件插入语句sudo vim /etc/apt/sources.list
a #进入插入模式
:wq #保存并退出

github上总结的python资源列表

Python 资源大全中文版

我想很多程序员应该记得 GitHub 上有一个 Awesome – XXX 系列的资源整理。awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由伯乐在线持续更新。

Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。

https://github.com/tingtinglu/awesome-python-cn


我们要做什么?


如何参与本项目?

从下面的目录来看,本项目的工作量小不了,所以非常期待能有更多程序员一起来参与。

不过加入前,有几个小要求:

  • 英文还不错,能读懂英文并用自己的话复述;
  • 在用 Python;

如有兴趣,请加 QQ:50872495。加 Q 时请注明「Python大全」


如何为列表贡献新资源?

欢迎大家为列表贡献高质量的新资源,提交PR时请参照以下要求:

  • 请确保推荐的资源自己使用过
  • 提交PR时请注明推荐理由

资源列表管理收到PR请求后,会定期(每周)在微博转发本周提交的PR列表,并在微博上面听取使用过这些资源的意见。确认通过后,会加入资源大全。

感谢您的贡献!


本项目的参与者

注:名单不分排名,不定期补充更新


奖励计划

虽然奖励可能并不是你加入的主要原因,但还是有必要提一下:

  • 整理超过 20 个资源后,可在伯乐在线上开通打赏;
  • 每整理 20 个资源,有机会获得技术书籍或各种有意思的创意、极客产品;
  • 奖励详情

环境管理

管理 Python 版本和环境的工具

  • p:非常简单的交互式 python 版本管理工具。官网
  • pyenv:简单的 Python 版本管理工具。官网
  • Vex:可以在虚拟环境中执行命令。官网
  • virtualenv:创建独立 Python 环境的工具。官网
  • virtualenvwrapper:virtualenv 的一组扩展。官网

包管理

管理包和依赖的工具。

  • pip:Python 包和依赖关系管理工具。官网
  • pip-tools:保证 Python 包依赖关系更新的一组工具。官网
  • conda:跨平台,Python 二进制包管理工具。官网
  • Curdling:管理 Python 包的命令行工具。官网
  • wheel:Python 分发的新标准,意在取代 eggs。官网

包仓库

本地 PyPI 仓库服务和代理。

  • warehouse:下一代 PyPI。官网
  • devpi:PyPI 服务和打包/测试/分发工具。官网
  • localshop:本地 PyPI 服务(自定义包并且自动对 PyPI 镜像)。官网

分发

打包为可执行文件以便分发。

  • PyInstaller:将 Python 程序转换成独立的执行文件(跨平台)。官网
  • dh-virtualenv:构建并将 virtualenv 虚拟环境作为一个 Debian 包来发布。官网
  • Nuitka:将脚本、模块、包编译成可执行文件或扩展模块。官网
  • py2app:将 Python 脚本变为独立软件包(Mac OS X)。官网
  • py2exe:将 Python 脚本变为独立软件包(Windows)。官网
  • pynsist:一个用来创建 Windows 安装程序的工具,可以在安装程序中打包 Python本身。官网

构建工具

将源码编译成软件。

  • buildout:一个构建系统,从多个组件来创建,组装和部署应用。官网
  • BitBake:针对嵌入式 Linux 的类似 make 的构建工具。官网
  • fabricate:对任何语言自动找到依赖关系的构建工具。官网
  • PlatformIO:多平台命令行构建工具。官网
  • PyBuilder:纯 Python 实现的持续化构建工具。官网
  • SCons:软件构建工具。官网

交互式解析器

交互式 Python 解析器。

  • IPython:功能丰富的工具,非常有效的使用交互式 Python。官网
  • bpython:界面丰富的 Python 解析器。官网
  • ptpython:高级交互式Python解析器, 构建于python-prompt-toolkit 之上。官网

文件

文件管理和 MIME(多用途的网际邮件扩充协议)类型检测。

  • imghdr:(Python 标准库)检测图片类型。官网
  • mimetypes:(Python 标准库)将文件名映射为 MIME 类型。官网
  • path.py:对 os.path 进行封装的模块。官网
  • pathlib:(Python3.4+ 标准库)跨平台的、面向对象的路径操作库。官网
  • python-magic:文件类型检测的第三方库 libmagic 的 Python 接口。官网
  • Unipath:用面向对象的方式操作文件和目录。官网
  • watchdog:管理文件系统事件的 API 和 shell 工具官网

日期和时间

操作日期和时间的类库。

  • arrow:更好的 Python 日期时间操作类库。官网
  • Chronyk:Python 3 的类库,用于解析手写格式的时间和日期。官网
  • dateutil:Python datetime 模块的扩展。官网
  • delorean:解决 Python 中有关日期处理的棘手问题的库。官网
  • moment:一个用来处理时间和日期的Python库。灵感来自于Moment.js。官网
  • PyTime:一个简单易用的Python模块,用于通过字符串来操作日期/时间。官网
  • pytz:现代以及历史版本的世界时区定义。将时区数据库引入Python。官网
  • when.py:提供用户友好的函数来帮助用户进行常用的日期和时间操作。官网

文本处理

用于解析和操作文本的库。

  • 通用
    • chardet:字符编码检测器,兼容 Python2 和 Python3。官网
    • difflib:(Python 标准库)帮助我们进行差异化比较。官网
    • ftfy:让Unicode文本更完整更连贯。官网
    • fuzzywuzzy:模糊字符串匹配。官网
    • Levenshtein:快速计算编辑距离以及字符串的相似度。官网
    • pangu.py:在中日韩语字符和数字字母之间添加空格。官网
    • yfiglet-figlet:pyfiglet -figlet 的 Python实现。
    • shortuuid:一个生成器库,用以生成简洁的,明白的,URL 安全的 UUID。官网
    • unidecode:Unicode 文本的 ASCII 转换形式 。官网
    • uniout:打印可读的字符,而不是转义的字符串。官网
    • xpinyin:一个用于把汉字转换为拼音的库。官网
  • Slug化
    • awesome-slugify:一个 Python slug 化库,可以保持 Unicode。官网
    • python-slugify:Python slug 化库,可以把 unicode 转化为 ASCII。官网
    • unicode-slugify:一个 slug 工具,可以生成 unicode slugs ,需要依赖 Django 。官网
  • 解析器
    • phonenumbers:解析,格式化,储存,验证电话号码。官网
    • PLY:lex 和 yacc 解析工具的 Python 实现。官网
    • Pygments:通用语法高亮工具。官网
    • pyparsing:生成通用解析器的框架。官网
    • python-nameparser:把一个人名分解为几个独立的部分。官网
    • python-user-agents:浏览器 user agent 解析器。官网
    • sqlparse:一个无验证的 SQL 解析器。官网

特殊文本格式处理

一些用来解析和操作特殊文本格式的库。

  • 通用
    • tablib:一个用来处理中表格数据的模块。官网
  • Office
    • Marmir:把输入的Python 数据结构转换为电子表单。官网
    • openpyxl:一个用来读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件的库。官网
    • python-docx:读取,查询以及修改 Microsoft Word 2007/2008 docx 文件。官网
    • unoconv:在 LibreOffice/OpenOffice 支持的任意文件格式之间进行转换。官网
    • XlsxWriter:一个用于创建 Excel .xlsx 文件的 Python 模块。官网
    • xlwings:一个使得在 Excel 中方便调用 Python 的库(反之亦然),基于 BSD 协议。官网
    • xlwt:读写 Excel 文件的数据和格式信息。官网 / xlrd
    • relatorio:模板化OpenDocument 文件。官网
  • PDF
    • PDFMiner:一个用于从PDF文档中抽取信息的工具。官网
    • PyPDF2:一个可以分割,合并和转换 PDF 页面的库。官网
    • ReportLab:快速创建富文本 PDF 文档。官网
  • Markdown
    • Mistune:快速并且功能齐全的纯 Python 实现的 Markdown 解析器。官网
    • Python-Markdown:John Gruber’s Markdown 的 Python 版实现。官网
  • YAML
    • PyYAML:Python 版本的 YAML 解析器。官网
  • CSV
    • csvkit:用于转换和操作 CSV 的工具。官网
  • Archive
    • unp:一个用来方便解包归档文件的命令行工具。官网

自然语言处理

用来处理人类语言的库。

  • NLTK:一个先进的平台,用以构建处理人类语言数据的 Python 程序。官网
  • jieba:中文分词工具。官网
  • langid.py:独立的语言识别系统。官网
  • Pattern:Python 网络信息挖掘模块。官网
  • SnowNLP:一个用来处理中文文本的库。官网
  • TextBlob:为进行普通自然语言处理任务提供一致的 API。官网
  • TextGrocery:一简单高效的短文本分类工具,基于 LibLinear 和 Jieba。官网

文档

用以生成项目文档的库。

  • Sphinx:Python 文档生成器。官网
  • MkDocs:对 Markdown 友好的文档生成器。官网
  • pdoc:一个可以替换Epydoc 的库,可以自动生成 Python 库的 API 文档。官网
  • Pycco:文学编程(literate-programming)风格的文档生成器。官网

配置

用来保存和解析配置的库。

  • config:logging 模块作者写的分级配置模块。官网
  • ConfigObj:INI 文件解析器,带验证功能。官网
  • ConfigParser:(Python 标准库) INI 文件解析器。官网
  • profig:通过多种格式进行配置,具有数值转换功能。官网
  • python-decouple:将设置和代码完全隔离。官网

命令行工具

用于创建命令行程序的库。

  • 命令行程序开发
    • cement:Python 的命令行程序框架。官网
    • click:一个通过组合的方式来创建精美命令行界面的包。官网
    • cliff:一个用于创建命令行程序的框架,可以创建具有多层命令的命令行程序。官网
    • clint:Python 命令行程序工具。官网
    • colorama:跨平台彩色终端文本。官网
    • docopt:Python 风格的命令行参数解析器。官网
    • Gooey:一条命令,将命令行程序变成一个 GUI 程序。官网
    • python-prompt-toolkit:一个用于构建强大的交互式命令行程序的库。官网
    • Pythonpy:在命令行中直接执行任何Python指令。官网
  • 生产力工具
    • aws-cli:Amazon Web Services 的通用命令行界面。官网
    • bashplotlib:在终端中进行基本绘图。官网
    • caniusepython3:判断是哪个项目妨碍你你移植到 Python 3。官网
    • cookiecutter:从 cookiecutters(项目模板)创建项目的一个命令行工具。官网
    • doitlive:一个用来在终端中进行现场演示的工具。官网
    • howdoi:通过命令行获取即时的编程问题解答。官网
    • httpie:一个命令行HTTP 客户端,cURL 的替代品,易用性更好。官网
    • PathPicker:从bash输出中选出文件。官网
    • percol:向UNIX shell 传统管道概念中加入交互式选择功能。官网
    • SAWS:一个加强版的 AWS 命令行。官网
    • thefuck:修正你之前的命令行指令。官网
    • mycli:一个 MySQL 命令行客户端,具有自动补全和语法高亮功能。官网
    • pgcli:Postgres 命令行工具,具有自动补全和语法高亮功能。官网

下载器

用来进行下载的库.

  • s3cmd:一个用来管理Amazon S3 和 CloudFront 的命令行工具。官网
  • s4cmd:超级 S3 命令行工具,性能更加强劲。官网
  • you-get:一个 YouTube/Youku/Niconico 视频下载器,使用 Python3 编写。官网
  • youtube-dl:一个小巧的命令行程序,用来下载 YouTube 视频。官网

图像处理

用来操作图像的库.

  • pillow:Pillow 是一个更加易用版的 PIL官网
  • hmap:图像直方图映射。官网
  • imgSeek:一个使用视觉相似性搜索一组图片集合的项目。官网
  • nude.py:裸体检测。官网
  • pyBarcode:不借助 PIL 库在 Python 程序中生成条形码。官网
  • pygram:类似 Instagram 的图像滤镜。官网
  • python-qrcode:一个纯 Python 实现的二维码生成器。官网
  • Quads:基于四叉树的计算机艺术。官网
  • scikit-image:一个用于(科学)图像处理的 Python 库。官网
  • thumbor:一个小型图像服务,具有剪裁,尺寸重设和翻转功能。官网
  • wand:MagickWand的Python 绑定。MagickWand 是 ImageMagick的 C API 。官网

OCR

光学字符识别库。

音频

用来操作音频的库

  • audiolazy:Python 的数字信号处理包。官网
  • audioread:交叉库 (GStreamer + Core Audio + MAD + FFmpeg) 音频解码。官网
  • beets:一个音乐库管理工具及 MusicBrainz 标签添加工具官网
  • dejavu:音频指纹提取和识别官网
  • django-elastic-transcoder:Django + Amazon Elastic Transcoder官网
  • eyeD3:一个用来操作音频文件的工具,具体来讲就是包含 ID3 元信息的 MP3 文件。官网
  • id3reader:一个用来读取 MP3 元数据的 Python 模块。官网
  • m3u8:一个用来解析 m3u8 文件的模块。官网
  • mutagen:一个用来处理音频元数据的 Python 模块。官网
  • pydub:通过简单、简洁的高层接口来操作音频文件。官网
  • pyechonest:Echo Nest API 的 Python 客户端官网
  • talkbox:一个用来处理演讲/信号的 Python 库官网
  • TimeSide:开源 web 音频处理框架。官网
  • tinytag:一个用来读取MP3, OGG, FLAC 以及 Wave 文件音乐元数据的库。官网
  • mingus:一个高级音乐理论和曲谱包,支持 MIDI 文件和回放功能。官网

Video

用来操作视频和GIF的库。

  • moviepy:一个用来进行基于脚本的视频编辑模块,适用于多种格式,包括动图 GIFs。官网
  • scikit-video:SciPy 视频处理常用程序。官网

地理位置

地理编码地址以及用来处理经纬度的库。

  • GeoDjango:世界级地理图形 web 框架。官网
  • GeoIP:MaxMind GeoIP Legacy 数据库的 Python API。官网
  • geojson:GeoJSON 的 Python 绑定及工具。官网
  • geopy:Python 地址编码工具箱。官网
  • pygeoip:纯 Python GeoIP API。官网
  • django-countries:一个 Django 应用程序,提供用于表格的国家选择功能,国旗图标静态文件以及模型中的国家字段。官网

HTTP

使用HTTP的库。

  • requests:人性化的HTTP请求库。官网
  • grequests:requests 库 + gevent ,用于异步 HTTP 请求.官网
  • httplib2:全面的 HTTP 客户端库。官网
  • treq:类似 requests 的Python API 构建于 Twisted HTTP 客户端之上。官网
  • urllib3:一个具有线程安全连接池,支持文件 post,清晰友好的 HTTP 库。官网

数据库

Python实现的数据库。

  • pickleDB:一个简单,轻量级键值储存数据库。官网
  • PipelineDB:流式 SQL 数据库。官网
  • TinyDB:一个微型的,面向文档型数据库。官网
  • ZODB:一个 Python 原生对象数据库。一个键值和对象图数据库。官网

数据库驱动

用来连接和操作数据库的库。

  • ySQL:awesome-mysql系列
    • mysql-python:Python 的 MySQL 数据库连接器。官网
    • ysqlclient:mysql-python 分支,支持 Python 3。
    • oursql:一个更好的 MySQL 连接器,支持原生预编译指令和 BLOBs.官网
    • PyMySQL:纯 Python MySQL 驱动,兼容 mysql-python。官网
  • PostgreSQL
    • psycopg2:Python 中最流行的 PostgreSQL 适配器。官网
    • queries:psycopg2 库的封装,用来和 PostgreSQL 进行交互。官网
    • txpostgres:基于 Twisted 的异步 PostgreSQL 驱动。官网
  • 其他关系型数据库
    • apsw:另一个 Python SQLite封装。官网
    • dataset:在数据库中存储Python字典
    • pymssql:一个简单的Microsoft SQL Server数据库接口。官网
  • NoSQL 数据库
    • cassandra-python-driver:Cassandra 的 Python 驱动。官网
    • HappyBase:一个为 Apache HBase 设计的,对开发者友好的库。官网
    • Plyvel:一个快速且功能丰富的 LevelDB 的 Python 接口。官网
    • py2neo:Neo4j restful 接口的Python 封装客户端。官网
    • pycassa:Cassandra 的 Python Thrift 驱动。官网
    • PyMongo:MongoDB 的官方 Python 客户端。官网
    • redis-py:Redis 的 Python 客户端。官网
    • telephus:基于 Twisted 的 Cassandra 客户端。官网
    • txRedis:基于 Twisted 的 Redis 客户端。官网

ORM

实现对象关系映射或数据映射技术的库。

  • 关系型数据库
    • Django Models:Django 的一部分。官网
    • SQLAlchemy:Python SQL 工具以及对象关系映射工具。官网
    • Peewee:一个小巧,富有表达力的 ORM。官网
    • PonyORM:提供面向生成器的 SQL 接口的 ORM。官网
    • python-sql:编写 Python 风格的 SQL 查询。官网
  • NoSQL 数据库
    • django-mongodb-engine:Django MongoDB 后端。官网
    • PynamoDB:Amazon DynamoDB 的一个 Python 风格接口。官网
    • flywheel:Amazon DynamoDB 的对象映射工具。官网
    • MongoEngine:一个Python 对象文档映射工具,用于 MongoDB。官网
    • hot-redis:为 Redis 提供 Python 丰富的数据类型。官网
    • redisco:一个 Python 库,提供可以持续存在在 Redis 中的简单模型和容器。官网
  • 其他
    • butterdb:Google Drive 电子表格的 Python ORM。官网

Web 框架

全栈 Web 框架。

  • Django:Python 界最流行的 web 框架。官网
  • Flask:一个 Python 微型框架。官网
  • yramid:一个小巧,快速,接地气的开源Python web 框架。
  • Bottle:一个快速小巧,轻量级的 WSGI 微型 web 框架。官网
  • CherryPy:一个极简的 Python web 框架,服从 HTTP/1.1 协议且具有WSGI 线程池。官网
  • TurboGears:一个可以扩展为全栈解决方案的微型框架。官网
  • web.py:一个 Python 的 web 框架,既简单,又强大。官网
  • web2py:一个全栈 web 框架和平台,专注于简单易用。官网
  • Tornado:一个web 框架和异步网络库。官网

权限

允许或拒绝用户访问数据或功能的库。

  • Carteblanche:Module to align code with thoughts of users and designers. Also magically handles navigation and permissions.官网
  • django-guardian:Django 1.2+ 实现了单个对象权限。官网
  • django-rules:一个小巧但是强大的应用,提供对象级别的权限管理,且不需要使用数据库。官网

CMS

内容管理系统

  • django-cms:一个开源的,企业级 CMS,基于 Django。官网
  • djedi-cms:一个轻量级但却非常强大的 Django CMS ,考虑到了插件,内联编辑以及性能。官网
  • FeinCMS:基于 Django 构建的最先进的内容管理系统之一。官网
  • Kotti:一个高级的,Python 范的 web 应用框架,基于 Pyramid 构建。官网
  • Mezzanine:一个强大的,持续的,灵活的内容管理平台。官网
  • Opps:一个为杂志,报纸网站以及大流量门户网站设计的 CMS 平台,基于 Django。官网
  • Plone:一个构建于开源应用服务器 Zope 之上的 CMS。官网
  • Quokka:灵活,可扩展的小型 CMS,基于 Flask 和 MongoDB。官网
  • Wagtail:一个 Django 内容管理系统。官网
  • Widgy:最新的 CMS 框架,基于 Django。官网

电子商务

用于电子商务以及支付的框架和库。

  • django-oscar:一个用于 Django 的开源的电子商务框架。官网
  • django-shop:一个基于 Django 的店铺系统。官网
  • Cartridge:一个基于 Mezzanine 构建的购物车应用。官网
  • shoop:一个基于 Django 的开源电子商务平台。官网
  • alipay:非官方的 Python 支付宝 API。官网
  • merchant:一个可以接收来自多种支付平台支付的 Django 应用。官网
  • money:货币类库with optional CLDR-backed locale-aware formatting and an extensible currency exchange solution.官网
  • python-currencies:显示货币格式以及它的数值。官网

RESTful API

用来开发RESTful APIs的库

  • Django
    • django-rest-framework:一个强大灵活的工具,用来构建 web API。官网
    • django-tastypie:为Django 应用开发API。官网
    • django-formapi:为 Django 的表单验证,创建 JSON APIs 。官网
  • Flask
    • flask-api:为 flask 开发的,可浏览 Web APIs 。官网
    • flask-restful:为 flask 快速创建REST APIs 。官网
    • flask-restless:为 SQLAlchemy 定义的数据库模型创建 RESTful APIs 。官网
    • flask-api-utils:为 Flask 处理 API 表示和验证。官网
    • eve:REST API 框架,由 Flask, MongoDB 等驱动。官网
  • Pyramid
    • cornice:一个Pyramid 的 REST 框架 。官网
  • 与框架无关的
    • falcon:一个用来建立云 API 和 web app 后端的噶性能框架。官网
    • sandman:为现存的数据库驱动系统自动创建 REST APIs 。官网
    • restless:框架无关的 REST 框架 ,基于从 Tastypie 学到的知识。官网
    • ripozo:快速创建 REST/HATEOAS/Hypermedia APIs。官网

验证

实现验证方案的库。

  • OAuth
    • Authomatic:简单但是强大的框架,身份验证/授权客户端。官网
    • django-allauth:Django 的验证应用。官网
    • django-oauth-toolkit:为 Django 用户准备的 OAuth2。官网
    • django-oauth2-provider:为 Django 应用提供 OAuth2 接入。官网
    • Flask-OAuthlib:OAuth 1.0/a, 2.0 客户端实现,供 Flask 使用。官网
    • OAuthLib:一个 OAuth 请求-签名逻辑通用、 完整的实现。官网
    • python-oauth2:一个完全测试的抽象接口。用来创建 OAuth 客户端和服务端。官网
    • python-social-auth:一个设置简单的社会化验证方式。官网
    • rauth:OAuth 1.0/a, 2.0, 和 Ofly 的 Python 库。官网
    • sanction:一个超级简单的OAuth2 客户端实现。官网
  • 其他
    • jose:JavaScript 对象签名和加密草案的实现。官网
    • PyJWT:JSON Web 令牌草案 01。官网
    • python-jws:JSON Web 签名草案 02 的实现。官网
    • python-jwt:一个用来生成和验证 JSON Web 令牌的模块。官网

模板引擎

模板生成和词法解析的库和工具。

  • Jinja2:一个现代的,对设计师友好的模板引擎。官网
  • Chameleon:一个 HTML/XML 模板引擎。 模仿了 ZPT(Zope Page Templates), 进行了速度上的优化。官网
  • Genshi:Python 模板工具,用以生成 web 感知的结果。官网
  • Mako:Python 平台的超高速轻量级模板。官网

Queue

处理事件以及任务队列的库。

  • celery:一个异步任务队列/作业队列,基于分布式消息传递。官网
  • huey:小型多线程任务队列。官网
  • mrq:Mr. Queue -一个 Python 的分布式 worker 任务队列, 使用 Redis 和 gevent。官网
  • rq:简单的 Python 作业队列。官网
  • simpleq:一个简单的,可无限扩张的,基于亚马逊 SQS 的队列。官网

搜索

对数据进行索引和执行搜索查询的库和软件。

  • django-haystack:Django 模块化搜索。官网
  • elasticsearch-py:Elasticsearch 的官方底层 Python 客户端。官网
  • elasticsearch-dsl-py:Elasticsearch 的官方高级 Python 客户端。官网
  • solrpy:solr的 Python 客户端。官网
  • Whoosh:一个快速的纯 Python 搜索引擎库。官网

动态消息

用来创建用户活动的库。

  • django-activity-stream:从你的站点行为中生成通用活动信息流。官网
  • Stream-Framework:使用 Cassandra 和 Redis 创建动态消息和通知系统。官网

资源管理

管理、压缩、缩小网站资源的工具。

  • django-compressor:将链接和内联的 JavaScript 或 CSS 压缩到一个单独的缓存文件中。官网
  • django-storages:一个针对 Django 的自定义存储后端的工具集合。官网
  • fanstatic:打包、优化,并且把静态文件依赖作为 Python 的包来提供。官网
  • File Conveyor:一个后台驻留的程序,用来发现和同步文件到 CDNs, S3 和 FTP。官网
  • Flask-Assets:帮你将 web 资源整合到你的 Flask app 中。官网
  • jinja-assets-compressor:一个 Jinja 扩展,用来编译和压缩你的资源。官网
  • webassets:为你的静态资源打包、优化和管理生成独一无二的缓存 URL。官网

缓存

缓存数据的库。

  • Beaker:一个缓存和会话库,可以用在 web 应用和独立 Python脚本和应用上。官网
  • django-cache-machine:Django 模型的自动缓存和失效。官网
  • django-cacheops:具有自动颗粒化事件驱动失效功能的 ORM。官网
  • django-viewlet:渲染模板,同时具有额外的缓存控制功能。官网
  • dogpile.cache:dogpile.cache 是 Beaker 的下一代替代品,由同一作者开发。官网
  • HermesCache:Python 缓存库,具有基于标签的失效和 dogpile effect 保护功能。官网
  • johnny-cache:django应用缓存框架。官网
  • pylibmc:libmemcached 接口的 Python 封装。官网

电子邮件

用来发送和解析电子邮件的库。

  • django-celery-ses:带有 AWS SES 和 Celery 的 Django email 后端。官网
  • envelopes:供人类使用的电子邮件库。官网
  • flanker:一个 email 地址和 Mime 解析库。官网
  • imbox:Python IMAP 库官网
  • inbox.py:Python SMTP 服务器。官网
  • inbox:一个开源电子邮件工具箱。官网
  • lamson:Python 风格的 SMTP 应用服务器。官网
  • mailjet:Mailjet API 实现,用来提供批量发送邮件,统计等功能。官网
  • marrow.mailer:高性能可扩展邮件分发框架。官网
  • modoboa:一个邮件托管和管理平台,具有现代的、简约的 Web UI。官网
  • pyzmail:创建,发送和解析电子邮件。官网
  • Talon:Mailgun 库,用来抽取信息和签名。官网

国际化

用来进行国际化的库。

  • Babel:一个Python 的国际化库。官网
  • Korean:一个韩语词态库。官网

URL处理

解析URLs的库

  • furl:一个让处理 URL 更简单小型 Python 库。官网
  • purl:一个简单的,不可变的URL类,具有简洁的 API 来进行询问和处理。官网
  • pyshorteners:一个纯 Python URL 缩短库。官网
  • shorturl:生成短小 URL 和类似 bit.ly 短链的Python 实现。官网
  • webargs:一个解析 HTTP 请求参数的库,内置对流行 web 框架的支持,包括 Flask, Django, Bottle, Tornado和 Pyramid。官网

HTML处理

处理 HTML和XML的库。

  • BeautifulSoup:以 Python 风格的方式来对 HTML 或 XML 进行迭代,搜索和修改。官网
  • bleach:一个基于白名单的 HTML 清理和文本链接库。官网
  • cssutils:一个 Python 的 CSS 库。官网
  • html5lib:一个兼容标准的 HTML 文档和片段解析及序列化库。官网
  • lxml:一个非常快速,简单易用,功能齐全的库,用来处理 HTML 和 XML。官网
  • MarkupSafe:为Python 实现 XML/HTML/XHTML 标记安全字符串。官网
  • pyquery:一个解析 HTML 的库,类似 jQuery。官网
  • untangle:将XML文档转换为Python对象,使其可以方便的访问。官网
  • xhtml2pdf:HTML/CSS 转 PDF 工具。官网
  • xmltodict:像处理 JSON 一样处理 XML。官网

爬取网络站点的库

  • Scrapy:一个快速高级的屏幕爬取及网页采集框架。官网
  • cola:一个分布式爬虫框架。官网
  • Demiurge:基于PyQuery 的爬虫微型框架。官网
  • feedparser:通用 feed 解析器。官网
  • Grab:站点爬取框架。官网
  • MechanicalSoup:用于自动和网络站点交互的 Python 库。官网
  • portia:Scrapy 可视化爬取。官网
  • pyspider:一个强大的爬虫系统。官网
  • RoboBrowser:一个简单的,Python 风格的库,用来浏览网站,而不需要一个独立安装的浏览器。官网

网页内容提取

用于进行网页内容提取的库。

  • Haul:一个可以扩展的图像爬取工具。官网
  • html2text:将 HTML 转换为 Markdown 格式文本官网
  • lassie:人性化的网页内容检索库。官网
  • micawber:一个小型网页内容提取库,用来从 URLs 提取富内容。官网
  • newspaper:使用 Python 进行新闻提取,文章提取以及内容策展。官网
  • opengraph:一个用来解析开放内容协议(Open Graph Protocol)的 Python模块。官网
  • python-goose:HTML内容/文章提取器。官网
  • python-readability:arc90 公司 readability 工具的 Python 高速端口。官网
  • sanitize:为杂乱的数据世界带来调理性。官网
  • sumy:一个为文本文件和 HTML 页面进行自动摘要的模块。官网
  • textract:从任何格式的文档中提取文本,Word,PowerPoint,PDFs 等等。官网

表单

进行表单操作的库。

  • Deform:Python HTML 表单生成库,受到了 formish 表单生成库的启发。官网
  • django-bootstrap3:集成了 Bootstrap 3 的 Django。官网
  • django-crispy-forms:一个 Django 应用,他可以让你以一种非常优雅且 DRY(Don’t repeat yourself) 的方式来创建美观的表单。官网
  • django-remote-forms:一个平台独立的 Django 表单序列化工具。官网
  • WTForms:一个灵活的表单验证和呈现库。官网
  • WTForms-JSON:一个 WTForms 扩展,用来处理 JSON 数据。官网

数据验证

数据验证库。多用于表单验证。

  • Cerberus:A mappings-validator with a variety of rules, normalization-features and simple customization that uses a pythonic schema-definition.官网
  • colander:一个用于对从 XML, JSON,HTML 表单获取的数据或其他同样简单的序列化数据进行验证和反序列化的系统。官网
  • kmatch:一种用于匹配/验证/筛选 Python 字典的语言。官网
  • schema:一个用于对 Python 数据结构进行验证的库。官网
  • Schematics:数据结构验证。官网
  • valideer:轻量级可扩展的数据验证和适配库。官网
  • voluptuous:一个 Python 数据验证库。主要是为了验证传入 Python的 JSON,YAML 等数据。官网

反垃圾技术

帮助你和电子垃圾进行战斗的库。

  • django-simple-captcha:一个简单、高度可定制的Django 应用,可以为任何Django表单添加验证码。官网
  • django-simple-spam-blocker:一个用于Django的简单的电子垃圾屏蔽工具。官网

标记

用来进行标记的库。

  • django-taggit:简单的 Django 标记工具。官网

管理面板

管理界面库。

  • Ajenti:一个你的服务器值得拥有的管理面板。官网
  • django-suit:Django 管理界面的一个替代品 (仅对于非商业用途是免费的)。官网
  • django-xadmin:Django admin 的一个替代品,具有很多不错的功能。官网
  • flask-admin:一个用于 Flask 的简单可扩展的管理界面框架。官网
  • flower:一个对 Celery 集群进行实时监控和提供 web 管理界面的工具。官网
  • Grappelli:Django 管理界面的一个漂亮的皮肤。官网
  • Wooey:一个 Django 应用,可以为 Python 脚本创建 web 用户界面。官网

静态站点生成器

静态站点生成器是一个软件,它把文本和模板作为输入,然后输出HTML文件。

  • Pelican:使用 Markdown 或 ReST 来处理内容, Jinja 2 来制作主题。支持 DVCS, Disqus.。AGPL 许可。官网
  • Cactus:为设计师设计的静态站点生成器。官网
  • Hyde:基于 Jinja2 的静态站点生成器。官网
  • Nikola:一个静态网站和博客生成器。官网
  • Tinkerer:Tinkerer 是一个博客引擎/静态站点生成器,由Sphinx驱动。官网
  • Lektor:一个简单易用的静态 CMS 和博客引擎。官网

进程

操作系统进程启动及通信库。

  • envoy:比 Python subprocess 模块更人性化。官网
  • sarge:另一 种 subprocess 模块的封装。官网
  • sh:一个完备的 subprocess 替代库。官网

并发和并行

用以进行并发和并行操作的库。

  • multiprocessing:(Python 标准库) 基于进程的“线程”接口。官网
  • threading:(Python 标准库)更高层的线程接口。官网
  • eventlet:支持 WSGI 的异步框架。官网
  • gevent:一个基于协程的 Python 网络库,使用greenlet官网
  • Tomorrow:用于产生异步代码的神奇的装饰器语法实现。官网

网络

用于网络编程的库。

  • asyncio:(Python 标准库) 异步 I/O, 事件循环, 协程以及任务。官网
  • Twisted:一个事件驱动的网络引擎。官网
  • pulsar:事件驱动的并发框架。官网
  • diesel:基于Greenlet 的事件 I/O 框架。官网
  • pyzmq:一个 ZeroMQ 消息库的 Python 封装。官网
  • txZMQ:基于 Twisted 的 ZeroMQ 消息库的 Python 封装。官网

WebSocket

帮助使用WebSocket的库。

  • AutobahnPython:给 Python 、使用的 WebSocket & WAMP 基于 Twisted 和 asyncio官网
  • Crossbar:开源统一应用路由(Websocket & WAMP for Python on Autobahn).官网
  • django-socketio:给 Django 用的 WebSockets。官网
  • WebSocket-for-Python:为Python2/3 以及 PyPy 编写的 WebSocket 客户端和服务器库。官网

WSGI 服务器

兼容 WSGI 的 web 服务器

  • gunicorn:Pre-forked, 部分是由 C 语言编写的。官网
  • uwsgi:uwsgi 项目的目的是开发一组全栈工具,用来建立托管服务, 由 C 语言编写。官网
  • bjoern:异步,非常快速,由 C 语言编写。官网
  • fapws3:异步 (仅对于网络端),由 C 语言编写。官网
  • meinheld:异步,部分是由 C 语言编写的。官网
  • netius:异步,非常快速。官网
  • paste:多线程,稳定,久经考验。官网
  • rocket:多线程。官网
  • waitress:多线程, 是它驱动着 Pyramid 框架。官网
  • Werkzeug:一个 WSGI 工具库,驱动着 Flask ,而且可以很方便大嵌入到你的项目中去。官网

RPC 服务器

兼容 RPC 的服务器。

  • SimpleJSONRPCServer:这个库是 JSON-RPC 规范的一个实现。官网
  • SimpleXMLRPCServer:(Python 标准库) 简单的 XML-RPC 服务器实现,单线程。官网
  • zeroRPC:zerorpc 是一个灵活的 RPC 实现,基于 ZeroMQ 和 MessagePack。官网

密码学

  • cryptography:这个软件包意在提供密码学基本内容和方法提供给 Python 开发者。官网
  • hashids:在 Python 中实现 hashids官网
  • Paramiko:SSHv2 协议的 Python (2.6+, 3.3+) ,提供客户端和服务端的功能。官网
  • Passlib:安全密码存储/哈希库,官网
  • PyCrypto:Python 密码学工具箱。官网
  • PyNacl:网络和密码学(NaCl) 库的 Python 绑定。官网

图形用户界面

用来创建图形用户界面程序的库。

  • curses:内建的 ncurses 封装,用来创建终端图形用户界面。官网
  • enaml:使用类似 QML 的Declaratic语法来创建美观的用户界面。官网
  • kivy:一个用来创建自然用户交互(NUI)应用程序的库,可以运行在 Windows, Linux, Mac OS X, Android 以及 iOS平台上。官网
  • pyglet:一个Python 的跨平台窗口及多媒体库。官网
  • PyQt:跨平台用户界面框架 Qt 的 Python 绑定 ,支持Qt v4 和 Qt v5。官网
  • PySide:P跨平台用户界面框架 Qt 的 Python 绑定 ,支持Qt v4。官网
  • Tkinter:Tkinter 是 Python GUI 的一个事实标准库。官网
  • Toga:一个 Python 原生的, 操作系统原生的 GUI 工具包。官网
  • urwid:一个用来创建终端 GUI 应用的库,支持组件,事件和丰富的色彩等。官网
  • wxPython:wxPython 是 wxWidgets C++ 类库和 Python 语言混合的产物。官网
  • PyGObject:GLib/GObject/GIO/GTK+ (GTK+3) 的 Python 绑定官网
  • Flexx:Flexx 是一个纯 Python 语言编写的用来创建 GUI 程序的工具集,它使用 web 技术进行界面的展示。官网

游戏开发

超赞的游戏开发库。

  • Cocos2d:cocos2d 是一个用来开发 2D 游戏, 示例和其他图形/交互应用的框架。基于 pyglet。官网
  • Panda3D:由迪士尼开发的 3D 游戏引擎,并由卡内基梅陇娱乐技术中心负责维护。使用C++编写, 针对 Python 进行了完全的封装。官网
  • Pygame:Pygame 是一组 Python 模块,用来编写游戏。官网
  • PyOgre:Ogre 3D 渲染引擎的 Python 绑定,可以用来开发游戏和仿真程序等任何 3D 应用。官网
  • PyOpenGL:OpenGL 的 Python 绑定及其相关 APIs。官网
  • PySDL2:SDL2 库的封装,基于 ctypes。官网
  • RenPy:一个视觉小说(visual novel)引擎。官网

日志

用来生成和操作日志的库。

  • logging:(Python 标准库) 为 Python 提供日志功能。官网
  • logbook:Logging 库的替代品。官网
  • Eliot:为复杂的和分布式系统创建日志。官网
  • Raven:Sentry的 Python 客户端。官网
  • Sentry:实时记录和收集日志的服务器。官网

Testing

进行代码库测试和生成测试数据的库。

  • 测试框架
    • unittest:(Python 标准库) 单元测试框架。官网
    • nose:nose 扩展了 unittest 的功能。官网
    • contexts:一个 Python 3.3+ 的 BDD 框架。受到C#
    • hypothesis:Hypothesis 是一个基于先进的 Quickcheck 风格特性的测试库。官网
    • mamba:Python 的终极测试工具, 拥护BDD。官网
    • PyAutoGUI:PyAutoGUI 是一个人性化的跨平台 GUI 自动测试模块。官网
    • pyshould:Should 风格的断言,基于 PyHamcrest官网
    • pytest:一个成熟的全功能 Python 测试工具。官网
    • green:干净,多彩的测试工具。官网
    • pyvows:BDD 风格的测试工具,受Vows.js的启发。官网
    • Robot Framework:一个通用的自动化测试框架。官网
  • Web 测试
    • Selenium:Selenium WebDriver 的 Python 绑定。官网
    • locust:使用 Python 编写的,可扩展的用户加载测试工具。官网
    • sixpack:一个和语言无关的 A/B 测试框架。官网
    • splinter:开源的 web 应用测试工具。官网
  • Mock测试
    • mock:(Python 标准库) 一个用于伪造测试的库。官网
    • doublex:Python 的一个功能强大的 doubles 测试框架。官网
    • freezegun:通过伪造日期模块来生成不同的时间。官网
    • httmock:针对 Python 2.6+ 和 3.2+ 生成 伪造请求的库。官网
    • httpretty:Python 的 HTTP 请求 mock 工具。官网
    • responses:伪造 Python 中的 requests 库的一个通用库。官网
    • VCR.py:在你的测试中记录和重放 HTTP 交互。官网
  • 对象工厂
    • factoryboy:一个 Python 用的测试固件 (test fixtures) 替代库。官网
    • mixer:另外一个测试固件 (test fixtures) 替代库,支持 Django, Flask, SQLAlchemy, Peewee 等。官网
    • modelmommy:为 Django 测试创建随机固件官网
  • 代码覆盖率
    • coverage:代码覆盖率测量。官网
  • 伪数据
    • faker:一个 Python 库,用来生成伪数据。官网
    • fake2db:伪数据库生成器。官网
    • radar:生成随机的日期/时间。官网
  • 错误处理
    • FuckIt.py:FuckIt.py 使用最先进的技术来保证你的 Python 代码无论对错都能继续运行。官网

代码分析和Lint工具

进行代码分析,解析和操作代码库的库和工具。

  • 代码分析
    • code2flow:把你的 Python 和 JavaScript 代码转换为流程图。官网
    • pycallgraph:这个库可以把你的Python 应用的流程(调用图)进行可视化。官网
    • pysonar2:Python 类型推断和检索工具。官网
  • Lint工具
    • Flake8:模块化源码检查工具: pep8, pyflakes 以及 co。官网
    • Pylint:一个完全可定制的源码分析器。官网
    • pylama:Python 和 JavaScript 的代码审查工具。官网

Debugging Tools

用来进行代码调试的库。

  • 调试器
    • ipdb:IPython 启用的 pdb官网
    • pudb:全屏,基于控制台的 Python 调试器。官网
    • pyringe:可以在 Python 进程中附加和注入代码的调试器。官网
    • wdb:一个奇异的 web 调试器,通过 WebSockets 工作。官网
    • winpdb:一个具有图形用户界面的 Python 调试器,可以进行远程调试,基于 rpdb2。官网
    • django-debug-toolbar:为 Django 显示各种调试信息。官网
    • django-devserver:一个 Django 运行服务器的替代品。官网
    • flask-debugtoolbar:django-debug-toolbar 的 flask 版。官网
  • 性能分析器
    • lineprofiler:逐行性能分析。官网
    • memoryprofiler:监控 Python 代码的内存使用。官网
    • profiling:一个交互式 Python 性能分析工具。官网
  • 其他
    • pyelftools:解析和分析 ELF 文件以及 DWARF 调试信息。官网
    • python-statsd:statsd 服务器的 Python 客户端。官网

Science and Data Analysis

用来进行科学计算和数据分析的库。

  • astropy:一个天文学 Python 库。官网
  • bcbio-nextgen:这个工具箱为全自动高通量测序分析提供符合最佳实践的处理流程。官网
  • bccb:生物分析相关代码集合官网
  • Biopython:Biopython 是一组可以免费使用的用来进行生物计算的工具。官网
  • blaze:NumPy 和 Pandas 的大数据接口。官网
  • cclib:一个用来解析和解释计算化学软件包输出结果的库。官网
  • NetworkX:一个为复杂网络设计的高性能软件。官网
  • Neupy:执行和测试各种不同的人工神经网络算法。官网
  • Numba:Python JIT (just in time) 编译器,针对科学用的 Python ,由Cython 和 NumPy 的开发者开发。官网
  • NumPy:使用 Python 进行科学计算的基础包。官网
  • Open Babel:一个化学工具箱,用来描述多种化学数据。官网
  • Open Mining:使用 Python 挖掘商业情报 (BI) (Pandas web 接口)。官网
  • orange:通过可视化编程或 Python 脚本进行数据挖掘,数据可视化,分析和机器学习。官网
  • Pandas:提供高性能,易用的数据结构和数据分析工具。官网
  • PyDy:PyDy 是 Python Dynamics 的缩写,用来为动力学运动建模工作流程提供帮助, 基于 NumPy, SciPy, IPython 和 matplotlib。官网
  • PyMC:马尔科夫链蒙特卡洛采样工具。官网
  • RDKit:化学信息学和机器学习软件。官网
  • SciPy:由一些基于 Python ,用于数学,科学和工程的开源软件构成的生态系统。官网
  • statsmodels:统计建模和计量经济学。官网
  • SymPy:一个用于符号数学的 Python 库。官网
  • zipline:一个 Python 算法交易库。官网

数据可视化

进行数据可视化的库。 参见: awesome-javascript

  • matplotlib:一个 Python 2D 绘图库。官网
  • bokeh:用 Python 进行交互式 web 绘图。官网
  • ggplot:ggplot2 给 R 提供的 API 的 Python 版本。官网
  • plotly:协同 Python 和 matplotlib 工作的 web 绘图库。官网
  • pygal:一个 Python SVG 图表创建工具。官网
  • pygraphviz:Graphviz 的 Python 接口。官网
  • PyQtGraph:交互式实时2D/3D/图像绘制及科学/工程学组件。官网
  • SnakeViz:一个基于浏览器的 Python’s cProfile 模块输出结果查看工具。官网
  • vincent:把 Python 转换为 Vega 语法的转换工具。官网
  • VisPy:基于 OpenGL 的高性能科学可视化工具。官网

计算机视觉

计算机视觉库。

  • OpenCV:开源计算机视觉库。官网
  • SimpleCV:一个用来创建计算机视觉应用的开源框架。官网

机器学习

机器学习库。 参见: awesome-machine-learning.

  • Crab:灵活、快速的推荐引擎。官网
  • gensim:人性化的话题建模库。官网
  • hebel:GPU 加速的深度学习库。官网
  • NuPIC:智能计算 Numenta 平台。官网
  • pattern:Python 网络挖掘模块。官网
  • PyBrain:另一个 Python 机器学习库。官网
  • Pylearn2:一个基于 Theano 的机器学习库。官网
  • python-recsys:一个用来实现推荐系统的 Python 库。官网
  • scikit-learn:基于 SciPy 构建的机器学习 Python 模块。官网
  • pydeep:Python 深度学习库。官网
  • vowpalporpoise:轻量级 Vowpal Wabbit 的 Python 封装。官网
  • skflow:一个 TensorFlow 的简化接口(模仿 scikit-learn)。官网

MapReduce

MapReduce 框架和库。

  • dpark:Spark 的 Python 克隆版,一个类似 MapReduce 的框架。官网
  • dumbo:这个 Python 模块可以让人轻松的编写和运行 Hadoop 程序。官网
  • luigi:这个模块帮你构建批处理作业的复杂流水线。官网
  • mrjob:在 Hadoop 或 Amazon Web Services 上运行 MapReduce 任务。官网
  • PySpark:Spark 的 Python API 。官网
  • streamparse:运行针对事实数据流的 Python 代码。集成了Apache Storm官网

函数式编程

使用 Python 进行函数式编程。

  • CyToolz:Toolz 的 Cython 实现 : 高性能函数式工具。官网
  • fn.py:在 Python 中进行函数式编程 : 实现了一些享受函数式编程缺失的功能。官网
  • funcy:炫酷又实用的函数式工具。官网
  • Toolz:一组用于迭代器,函数和字典的函数式编程工具。官网

第三方 API

用来访问第三方 API的库。 参见: List of Python API Wrappers and Libraries

  • apache-libcloud:一个为各种云设计的 Python 库。官网
  • boto:Amazon Web Services 的 Python 接口。官网
  • django-wordpress:WordPress models and views for Django.官网
  • facebook-sdk:Facebook 平台的 Python SDK.官网
  • facepy:Facepy 让和 Facebook’s Graph API 的交互变得更容易。官网
  • gmail:Gmail 的 Python 接口。官网
  • google-api-python-client:Python 用的 Google APIs 客户端库。官网
  • gspread:Google 电子表格的 Python API.官网
  • twython:Twitter API 的封装。官网

DevOps 工具

用于 DevOps 的软件和库。

  • Ansible:一个非常简单的 IT 自动化平台。官网
  • SaltStack:基础设施自动化和管理系统。官网
  • OpenStack:用于构建私有和公有云的开源软件。官网
  • Docker Compose:快速,分离的开发环境,使用 Docker。官网
  • Fabric:一个简单的,Python 风格的工具,用来进行远程执行和部署。官网
  • cuisine:为 Fabric 提供一系列高级函数。官网
  • Fabtools:一个用来编写超赞的 Fabric 文件的工具。官网
  • gitapi:Git 的纯 Python API。官网
  • hgapi:Mercurial 的纯 Python API。官网
  • honcho:Foreman的 Python 克隆版,用来管理基于Procfile的应用。官网
  • pexpect:Controlling interactive programs in a pseudo-terminal like 在一个伪终端中控制交互程序,就像 GNU expect 一样。官网
  • psutil:一个跨平台进程和系统工具模块。官网
  • supervisor:UNIX 的进程控制系统。官网

任务调度

任务调度库。

  • APScheduler:轻巧但强大的进程内任务调度,使你可以调度函数。官网
  • django-schedule:一个 Django 排程应用。官网
  • doit:一个任务执行和构建工具。官网
  • gunnery:分布式系统使用的多用途任务执行工具 ,具有 web 交互界面。官网
  • Joblib:一组为 Python 提供轻量级作业流水线的工具。官网
  • Plan:如有神助地编写 crontab 文件。官网
  • schedule:人性化的 Python 任务调度库。官网
  • Spiff:使用纯 Python 实现的强大的工作流引擎。官网
  • TaskFlow:一个可以让你方便执行任务的 Python 库,一致并且可靠。官网

外来函数接口

使用外来函数接口的库。

  • cffi:用来调用 C 代码的外来函数接口。官网
  • ctypes:(Python 标准库) 用来调用 C 代码的外来函数接口。官网
  • PyCUDA:Nvidia CUDA API 的封装。官网
  • SWIG:简化的封装和接口生成器。官网

高性能

让 Python 更快的库。

  • Cython:优化的 Python 静态编译器。使用类型混合使 Python 编译成 C 或 C++ 模块来获得性能的极大提升。官网
  • PeachPy:嵌入 Python 的 x86-64 汇编器。可以被用作 Python 内联的汇编器或者是独立的汇编器,用于 Windows, Linux, OS X, Native Client 或者 Go 。官网
  • PyPy:使用 Python 实现的 Python。解释器使用黑魔法加快 Python 运行速度且不需要加入额外的类型信息。官网
  • Pyston:使用 LLVM 和现代 JIT 技术构建的 Python 实现,目标是为了获得很好的性能。官网
  • Stackless Python:一个强化版的 Python。官网

微软的 Windows平台

在 Windows 平台上进行 Python 编程。

  • Python(x,y):面向科学应用的 Python 发行版,基于 Qt 和 Spyder。官网
  • pythonlibs:非官方的 Windows 平台 Python 扩展二进制包。官网
  • PythonNet:Python 与 .NET 公共语言运行库 (CLR)的集成。官网
  • PyWin32:针对 Windows 的Python 扩展。官网
  • WinPython:Windows 7/8 系统下便携式开发环境。官网

网络可视化和SDN

用来进行网络可视化和SDN(软件定义网络)的工具和库。

  • Mininet:一款流行的网络模拟器以及用 Python 编写的 API。官网
  • POX:一个针对基于 Python 的软件定义网络应用(例如 OpenFlow SDN 控制器)的开源开发平台。官网
  • Pyretic:火热的 SDN 编程语言中的一员,为网络交换机和模拟器提供强大的抽象能力。官网
  • SDX Platform:基于 SDN 的 IXP 实现,影响了 Mininet, POX 和 Pyretic。官网

硬件

用来对硬件进行编程的库。

  • ino:操作Arduino的命令行工具。官网
  • Pyro:Python 机器人编程库。官网
  • PyUserInput:跨平台的,控制鼠标和键盘的模块。官网
  • scapy:一个非常棒的操作数据包的库。官网
  • wifi:一个 Python 库和命令行工具用来在 Linux 平台上操作WiFi。官网
  • Pingo:Pingo 为类似Raspberry Pi,pcDuino, Intel Galileo等设备提供统一的API用以编程。官网

兼容性

帮助从 Python 2 向 Python 3迁移的库。

  • Python-Future:这就是 Python 2 和 Python 3 之间丢失的那个兼容性层。官网
  • Python-Modernize:使 Python 代码更加现代化以便最终迁移到 Python 3。官网
  • Six:Python 2 和 3 的兼容性工具。官网

杂项

不属于上面任何一个类别,但是非常有用的库。

  • blinker:一个快速的 Python 进程内信号/事件分发系统。官网
  • itsdangerous:一系列辅助工具用来将可信的数据传入不可信的环境。官网
  • pluginbase:一个简单但是非常灵活的 Python 插件系统。官网
  • Pychievements:一个用来创建和追踪成就的 Python 框架。官网
  • Tryton:一个通用商务框架。官网

算法和设计模式

Python 实现的算法和设计模式。

  • algorithms:一个 Python 算法模块。官网
  • python-patterns:Python 设计模式的集合。官网
  • sortedcontainers:快速,纯 Python 实现的SortedList,SortedDict 和 SortedSet 类型。官网

编辑器插件

编辑器和 IDE 的插件

  • Emacs
    • Elpy:Emacs Python 开发环境。官网
  • Sublime Text
    • SublimeJEDI:一个 Sublime Text 插件,用来使用超赞的自动补全库 Jedi。官网
    • Anaconda:Anaconda 把你的 Sublime Text 3 变成一个功能齐全的 Python IDE。官网
  • Vim
    • YouCompleteMe:引入基于 Jedi 的 Python 自动补全引擎。官网
    • Jedi-vim:绑定 Vim 和 Jedi 自动补全库对 Python 进行自动补全。官网
    • Python-mode:将 Vim 变成 Python IDE 的一款多合一插件。官网
  • Visual Studio
    • PTVS:Visual Studio 的 Python 工具官网

集成开发环境

流行的 Python 集成开发环境。

  • PyCharm:商业化的 Python IDE ,由 JetBrains 开发。也有免费的社区版提供。官网
  • LiClipse:基于 Eclipse 的免费多语言 IDE 。使用 PyDev 来支持 Python 。官网
  • Spyder:开源 Python IDE。官网

服务

在线工具和简化开发的 API 。

持续集成

参见: awesome-CIandCD.

  • Travis CI:一个流行的工具,为你的开源和私人项目提供持续集成服务。(仅支持 GitHub)官网
  • CircleCI:一个持续集成工具,可以非常快速的进行并行测试。 (仅支持 GitHub)官网
  • Vexor CI:一个为私人 app 提供持续集成的工具,支持按分钟付费。官网
  • Wercker:基于 Docker 平台,用来构建和部署微服务。官网

代码质量

  • Codacy:自动化代码审查,更加快速的发布高质量代码。对于开源项目是免费的。官网
  • QuantifiedCode:一个数据驱动、自动、持续的代码审查工具。官网

资源

在这里可以找到新的 Python 库。

网站

周刊

Twitter

学习指南

知名网站

值得关注的 Python 技术站点。

中文站点

  • 伯乐在线 Python 频道:分享 Python 开发技术、相关的行业动态。官网

英文站点

待补充

微博、微信公众号

  • Python开发者 微博:@Python开发者
  • Python开发者:人生苦短,我用 Python。Python 越来越受广大程序员的喜爱。「Python开发者」是最受欢迎的、专注分享Python技术的微信公众号,主要分享 Python 相关的技术文章、工具资源和资讯等。

    github上总结的python资源列表

Python·Win10通过Anaconda安装python和Jupyter

Python·Win10通过Anaconda安装python和Jupyter

标签(空格分隔): 软件安装/管理/使用 Python


一、Linux和windows下的python安装区别

关于linux的python

  • Unix系统默认是自带python的,python的可执行文件被安装在usr/local/bin目录中,库文件被安装在/usr/local/python目录下
  • Unix系统默认安装了python2和python3,但在终端输入python后,默认的是python2;如果需要使用python3,需要输入python3

关于windows的python

  • windows系统是需要自己安装python的,可以安装在任何路径下,本文主要介绍win10下如何安装python

  • 要安装python,可以直接下载python官网的安装包,进行安装; 但这种方法不是很方便,安装完成后,只是将python的可执行文件和库文件安装了,一些python的相关包并没有被安装,还需要进行各种包的安装

  • 一种便捷的安装方法是使用Anaconda(python安装管理程序)进行python的安装,Anaconda内置了python,numpy和scipy两个必要库以及一些其他库;本文主要介绍如何利用Anaconda进行python的安装


二、基于Anaconda安装python

2.1 下载Adaconda

  • Adaconda 官网下载地址,不知道为什么,Edge浏览器无法打开这个网站
  • 选择Python2.7版本
    Python&#183;Win10通过Anaconda安装python和Jupyter
    这里下载Anaconda版本的4.2.0

  • 得到的安装文件名称为:-4.2.0-Windows-x86_64

    • Anaconda2:表示是python2.7版本
    • 4.2.0:Anaconda的版本
    • windows-x86:windows系统
    • 64:64位操作系统

2.2 安装Adaconda

  • 双击Adaconda的exe文件
    Python&#183;Win10通过Anaconda安装python和Jupyter
    Python&#183;Win10通过Anaconda安装python和Jupyter
  • 同意许可
    Python&#183;Win10通过Anaconda安装python和Jupyter

  • 选择为哪个账户安装
    Python&#183;Win10通过Anaconda安装python和Jupyter

  • 选择安装位置,这里的路径可以自己选择;一定要注意,文件夹Anaconda2是安装程序自己创建的,不能事先在安装路径下创建该文件夹,否则会报错;这里选择的路径是”D:/Program Files/Anaconda2”
    Python&#183;Win10通过Anaconda安装python和Jupyter

  • 其他选项:是否添加环境变量;是否将Python2.7设置为默认
    Python&#183;Win10通过Anaconda安装python和Jupyter

  • 开始安装
    Python&#183;Win10通过Anaconda安装python和Jupyter

  • 安装完成
    Python&#183;Win10通过Anaconda安装python和Jupyter
    Python&#183;Win10通过Anaconda安装python和Jupyter

2.3 Anaconda2都安装了什么?

Python&#183;Win10通过Anaconda安装python和Jupyter

  • 安装了python2.7
    Python&#183;Win10通过Anaconda安装python和Jupyter

  • 安装了一系列与python开发相关的IDE
    Python&#183;Win10通过Anaconda安装python和Jupyter

  • win10多了一个Anaconda Navigator

    • 点击该菜单时,出现一个问题:点击任何图标都无法启动相应的程序(程序一闪而过,无法正常启动),最后查到如下解决方案

      参考《window下安装anaconda ipython和spyder都打不开

      • 在Anaconda2/Lib/site-packages目录下添加一个名为 sitecustomize.py的文件,文件内容如下:
        
        #file name:  sitecustomize.py
        
        import sys  
        sys.setdefaultencoding('utf-8')
    • Anaconda Nagigator内容,它可以可视化统一管理anaconda安装的内容

      • 在Home这一页,显示了anaconda安装的各种IDE,并且,提供了方便的设置
        Python&#183;Win10通过Anaconda安装python和Jupyter
      • 在Environments这一页,显示了anaconda安装的各种软件包
        Python&#183;Win10通过Anaconda安装python和Jupyter
    • 可以看到,默认情况下,glueviz没有被安装,可以点击Install自动安装
      Python&#183;Win10通过Anaconda安装python和Jupyter
    • 另外,发现Jupyter notebook无法启动,经查询,发现是因为jupyter的配置文件中控制起始目录那里,被不小心设置成了一个不存在的目录,所以,Jupyter无法正常启动
  • 在Lib/site-packages目录下有conda安装的各种包,下面是该目录下的部分文件,可以看到,有各种python相关的包
    Python&#183;Win10通过Anaconda安装python和Jupyter

2.5 Anacodna2的相关环境变量

由于在安装过程中,勾选了将Anaconda添加到环境变量,所以,在环境变量中PATH中会出现以下三个路径:

Anaconda2_root
Anaconda2_root/Scripts
Anaconda2_root/Library/bin

如果path中没有出现该路径,手动将这三个路径添加到PATH中,本次安装过程中,这3个环境变量的取值就没有被写入到PATH变量中,所以,手动添加了上面三个取值

Anaconda2_root
Anaconda2_root/Scripts
Anaconda2_root/Library/bin

Python&#183;Win10通过Anaconda安装python和Jupyter

2.6 安装完成后遇到了一个问题-无菜单

  • 在安装过程中,发现在开始栏处不显示Anaconda菜单栏!后来通过如下方案修复,在cmd中输入以下两句命令:
conda update menuinst
conda install -f console_shortcut ipython ipython-notebook ipython-qtconsole launcher spyder
  • 但问题并没有解决,使用该方法进行修复时,隐约发现了与用户相关的错误,之后想到,可能是因为在安装过程中,Select Installation Type这一步出了问题(选成了Just Me)!
    Python&#183;Win10通过Anaconda安装python和Jupyter

  • 之后,重新安装了一遍Anaconda,并且在Select Installation Type这一步,选择了“All Users”,安装完成后,问题解决!

2.7 测试是否安装正确

  • 如果环境配置正确,在cmd中输入python –version,会出现如下信息
    Python&#183;Win10通过Anaconda安装python和Jupyter
    一定要看清python是来自于哪里!可以看到,来自于Anaconda

注:在某次安装过程中出现了一个小问题:在安装anaconda之前,系统已经安装了python2.7,并没有将其卸载,系统默认的python是该安装,所以,在cmd中输入python后,出现的只有python信息,并没有anaconda的信息,这样会导致后面的一些问题,所以一定要注意,在安装anaconda时,最好将之前装的python移除。

2.8 Anaconda的一些命令

  • 查看已经安装的python应用包:conda list
  • 更新anaconda的安装包:conda update pythonpackage
  • 卸载anaconda的安装包:conda unistall pythonpackage
  • 安装新的python包:conda install pythonpackage
  • 更新pip:python -m pip install –upgrade pip

实际上,win10下新版本的anacodna的navigator界面,基本已经集合了以上各命令了

三、安装MinGW

3.1 MinGW的安装

Adaconda2.0.1之前的版本自带MinGw,但之后的版本不带MinGw了,需要自己安装,具体方法如下:

  • 打开CMD(注意是windows命令提示符,并不是进入到python环境下,否则会提示语法错误,因为conda命令就是在windows下面执行的)

  • 输入conda install mingw libpython,然后回车,会出现安装进度,稍等片刻即可安装完毕。
    Python&#183;Win10通过Anaconda安装python和Jupyter
    由于mingw比较大,所以下载起来稍微慢一些

  • 但这个过程中发现,由于使用了国外的服务器,下载速度慢的无法忍受,所以,更改了下载源地址,改为了清华的Anaconda镜像,下载速度提升特别特别明显!
    Python&#183;Win10通过Anaconda安装python和Jupyter
  • 安装完成,在Anaconda_root中出现了/MinGw目录(注:Anaconda_root=D:/Program Files/Anaconda2的安装路径)
    Python&#183;Win10通过Anaconda安装python和Jupyter

3.2 MinGW环境变量配置

  • 配置与MinGw相关的环境变量,将PATH中添加如下两个路径:
Anaconda2_root/MinGW/bin; 
Anaconda2_root/MinGW/x86_64-w64-mingw32/lib;  
  • 对于本文
D:/Program Files/Anaconda2/MinGW/bin
D:/Program Files/Anaconda2/MinGW/x86_64-w64-mingw32/lib 

Python&#183;Win10通过Anaconda安装python和Jupyter

3.3 检测是否安装成功

  • 安装完检查一下,打开cmd命令行,依次输入如下两个命令:
where gcc
where ld
  • 结果如下:
    Python&#183;Win10通过Anaconda安装python和Jupyter

四、更改Anaconda下载源地址

  • 利用conda install package-name可以方便安装各种需要的Python packages
  • 但由于官方的服务器在国外,因此下载速度很慢
  • 在国内,清华大学提供了Anaconda的仓库镜像,我们可以利用这个仓库!(清华大学开源软件镜像站
  • 只需要配置Anaconda的配置文件,添加清华的镜像源,然后将其设置为第一搜索渠道即可,实际上,只需要在cmd中输入如下2条指令即可完成
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
  • 随后,再利用anaconda安装package,均会从清华的镜像中下载,速度提高不止几十倍!

五、更改pip下载源地址

  • windows下,直接在user目录中创建一个pip目录,如:C:/Users/xx/pip,新建文件pip.ini,内容如下(这里使用的是清华的镜像):
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

Python&#183;Win10通过Anaconda安装python和Jupyter

  • 同样,速度提升好多倍!

Debian vps使用Fail2ban防止SSH密碼暴力破解

之前介紹過使用DenyHosts防止SSH密碼暴力破解,今天再來介紹另外一個工具Fail2ban來實現防止SSH密碼暴力破解。

關於DenyHosts的使用,請參考:

Debian vps使用DenyHosts防止SSH密碼暴力破解

Fail2ban介紹

Fail2ban是linux下一款安全工具。通過監視系統日誌,匹配日誌的錯誤信息(正則式匹配),然後執行相應的屏蔽動作(一般情況下是調用防火牆屏蔽)。如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,Fail2ban就會調用防火牆屏蔽這個IP,而且可以發送e-mail通知系統管理員,是一款很實用、很強大的軟件。

Fail2ban具有以下特性:

1、支持大量服務。如sshd,apache,qmail,proftpd,sasl等等
2、支持多種動作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(郵件通知)等等。
3、在logpath選項中支持通配符
4、需要Gamin支持(註:Gamin是用於監視文件和目錄是否更改的服務工具)
5、需要安裝python,iptables,tcp-wrapper,shorewall,Gamin。如果想要發郵件,那必需安裝postfix或sendmail

Fail2ban安裝

debian下執行以下命令:

1、更新系統

1
apt-get update && apt-get upgrade -y

2、安裝fail2ban

1
apt-get install fail2ban

3、(可選)安裝sendmail

1
apt-get install sendmail-bin sendmail

Fail2ban配置

Fail2ban的配置文件路徑為/etc/fail2ban:

1
2
3
4
5
6
7
[root@localhost ~]# cd /etc/fail2ban/
[root@localhost fail2ban]# ll
總計 24
drwxr-xr-x 2 root root  4096 10-28 17:00 action.d
-rw-rw-r-- 1 root root  1537 06-13 01:21 fail2ban.conf
drwxr-xr-x 2 root root  4096 10-28 17:00 filter.d
-rw-rw-r-- 1 root root 11514 06-13 01:21 jail.conf

該目錄下有兩個配置文件fail2ban.conf和jail.conf,兩個配置文件夾action.d和filter.d。

1、fail2ban.conf配置文件

該文件定義了fail2ban日誌位置及日誌級別, 此配置文件保持默認即可,一般不做修改。
默認fail2ban.conf裡面就三個參數,而且都有註釋。

1
2
3
loglevel = 3     #默認日誌的級別
logtarget = /var/log/fail2ban.log     #日誌的目的
socket = /var/run/fail2ban/fail2ban.sock     #socket的位置

2、jail.conf配置文件

jail.conf是fail2ban主要的配置文件,下面將按照功能介紹各個字段的意義。

1)IP白名單

1
ignoreip = 127.0.0.1/3       #忽略IP,在這個清單里的IP不會被屏蔽,可以添加自己的IP,用空格隔開

如果希望將自己的IP設置為不屏蔽,可以添加為如下形式:

1
ignoreip = 127.0.0.1/3 123.45.67.89 #123.45.67.89為自己的IP

2)屏蔽時間和重試次數

1
2
bantime = 600                #屏蔽時間,600為10分鐘,負數為永久
maxretry = 3                 #默認嘗試次數

3)郵件提醒

1
2
3
destemail = root@localhost  #接收郵件的地址
mta = sendmail              #郵件執行程序
action = %(action_)s        #指定到達嘗試次數后的動作,默認為僅屏蔽IP

4)ssh服務配置
fail2ban可以配置很多服務,但是默認僅啟用ssh服務。

1
2
3
4
5
6
7
[ssh]
 
enabled  = true                    #true為啟用
port     = ssh                     #ssh端口
filter   = sshd                    #過濾正則,位於/etc/fail2ban/filter.d
logpath  = /var/log/auth.log       #日誌路徑
maxretry = 6                       #最大嘗試次數,會覆蓋全局配置

3、filter.d配置文件夾

filter.d配置文件夾內日誌的過濾規則,如filter.d/sshd.conf有可對sshd日誌/var/log/secure進行分析。

我們可以通過命令fail2ban-regex [logfile] [filter.conf]來驗證過濾規則是否有效

1
fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/

4、action.d配置文件夾

action.d文件夾為根據過濾情況要執行的動作。默認是iptable+mail-whois。執行何動作在jail.conf文件中定義。

fail2ban相關操作命令

啟動fail2ban

1
fail2ban-client start

fail2ban-client start

1
fail2ban-client stop

觀察fail2ban運行情況,有3種方式:
1)運行fail2ban-client status,會看到有個Jail list名稱為sshd-iptables

1
2
3
4
[root@localhost ~]# fail2ban-client status
Status
|- Number of jail:     2
`- Jail list:          ssh-iptables, sasl-iptables

2)運行iptables –nL, 正常的話會看到多出來一個chain 名為fail2ban-SSH

1
fail2ban-SSH  tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22

3)通過日誌/var/log/fail2ban.log,可以查看fail2ban是否啟動正常,被禁用的IP也會在這裡看到;

參考文章:

Using Fail2ban to Secure Your Server
使用fail2ban防止暴力破解



PYTHON如何在内存中生成ZIP文件

如题,代码如下:

class MemoryZipFile(object):
   def __init__(self):
       #创建内存文件
       self._memory_zip = StringIO.StringIO()
       
   def append_content(self, filename_in_zip, file_content):
       """
       description: 写文本内容到zip
       """
       zf = zipfile.ZipFile(self._memory_zip, "a", zipfile.ZIP_DEFLATED, False)
       zf.writestr(filename_in_zip, file_content)
       for zfile in zf.filelist: zfile.create_system = 0
       return self
        
   def append_file(self, filename_in_zip, local_file_full_path):
       """

      description:写文件内容到zip

      注意这里的第二个参数是本地磁盘文件的全路径(windows:c/demo/1.jpg | linux: /usr/local/test/1.jpg)

      """

      zf = zipfile.ZipFile(self._memory_zip, "a", zipfile.ZIP_DEFLATED, False)

      zf.write(local_file_full_path, filename_in_zip)

      for zfile in zf.filelist: zfile.create_system = 0      

      return self

     

  def read(self):

      """

      description: 读取zip文件内容

      """

      self._memory_zip.seek(0)

      return self._memory_zip.read()

 

  def write_file(self, filename):

      """

      description:写zip文件到磁盘

      """

      f = file(filename, "wb")

      f.write(self.read())

      f.close()

使用方法如下:

        mem_zip_file = MemoryZipFile()
        mem_zip_file.append_content('mimetype', "application/epub+zip")
        mem_zip_file.append_content('META-INF/container.xml', '''<?xml version="1.0" encoding="UTF-8" ?>
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> </container>''');
        #追加磁盘上的文件内容到内存,注意这里的第二个参数是本地磁盘文件的全路径(windows:c/demo/1.jpg | linux: /usr/local/test/1.jpg)
        mem_zip_file.append_file("1.jpg", "c:/1.jpg")
 
 
        #将内存中的zip文件写入磁盘
        mem_zip_file.write_file("c:test.zip")
 
        #获取内存zip文件内容
        data = mem_zip_file.read()
 
        #上传到fdfs
        my_fdfs_client.upload_by_buffer(data, 'zip')

自己動手優化服務器安全設置

很多玩vps的朋友並不是專業的運維工程師,可能僅僅就是搭建個人博客或者服務,對於服務器的安全設置並不熟悉。不熟悉帶來的後果往往就是服務器被黑,被別人用於不正規的用途,如發送垃圾郵件、ddos等。

實際上,我們掌握必要的服務器安全設置方法后,就能夠規避大部分被黑的風險。本文希望通過這篇文章讓大家對於常用的服務器安全設置有一些了解和認識。本文針對的發行版為debian,其他系統命令會有所不同。

保持系統軟件最新

經常保持系統軟件最新是最為基本的安全設置。
執行以下命令:

1
apt-get update && apt-get upgrade -y

安裝fail2ban

Fail2ban是linux下一款安全工具。通過監視系統日誌,匹配日誌的錯誤信息(正則式匹配),然後執行相應的屏蔽動作(一般情況下是調用防火牆屏蔽)。fail2ban支持大量服務:如sshd,apache,qmail,proftpd,sasl等等。fail2ban可以有效的屏蔽密碼破解等攻擊。

使用請參考:
Debian vps使用Fail2ban防止SSH密碼暴力破解

採用SSH秘鑰方式登錄VPS

網絡上無時無刻不發生着vps SSH密碼暴力破解的事情,最好的解決辦法就是不採用密碼登錄VPS,直接用SSH秘鑰登錄vps。

使用請參考:
PUTTY SSH密鑰方式登陸Debian vps

設置iptables防火牆

Iptables 是建立在 netfilter 架構基礎上的一個包過濾管理工具,最主要的作用是用來做防火牆或透明代理。一般linux的發行版都會帶有iptables。

iptables的使用參考:
Debian VPS下使用iptables防火牆

參考文章:
Securing Your Server
OS Hardening To Better Secure Linux Server
My First 5 Minutes On A Server; Or, Essential Security for Linux Servers



很多玩vps的朋友並不是專業的運維工程師,可能僅僅就是搭建個人博客或者服務,對於服務器的安全設置並不熟悉。不熟悉帶來的後果往往就是服務器被黑,被別人用於不正規的用途,如發送垃圾郵件、ddos等。

實際上,我們掌握必要的服務器安全設置方法后,就能夠規避大部分被黑的風險。本文希望通過這篇文章讓大家對於常用的服務器安全設置有一些了解和認識。本文針對的發行版為debian,其他系統命令會有所不同。

保持系統軟件最新

經常保持系統軟件最新是最為基本的安全設置。
執行以下命令:

1
apt-get update && apt-get upgrade -y

安裝fail2ban

Fail2ban是linux下一款安全工具。通過監視系統日誌,匹配日誌的錯誤信息(正則式匹配),然後執行相應的屏蔽動作(一般情況下是調用防火牆屏蔽)。fail2ban支持大量服務:如sshd,apache,qmail,proftpd,sasl等等。fail2ban可以有效的屏蔽密碼破解等攻擊。

使用請參考:
Debian vps使用Fail2ban防止SSH密碼暴力破解

採用SSH秘鑰方式登錄VPS

網絡上無時無刻不發生着vps SSH密碼暴力破解的事情,最好的解決辦法就是不採用密碼登錄VPS,直接用SSH秘鑰登錄vps。

使用請參考:
PUTTY SSH密鑰方式登陸Debian vps

設置iptables防火牆

Iptables 是建立在 netfilter 架構基礎上的一個包過濾管理工具,最主要的作用是用來做防火牆或透明代理。一般linux的發行版都會帶有iptables。

iptables的使用參考:
Debian VPS下使用iptables防火牆

參考文章:
Securing Your Server
OS Hardening To Better Secure Linux Server
My First 5 Minutes On A Server; Or, Essential Security for Linux Servers



linux及windows下使用Python获取IP地址

使用Python可以用很简单的方法得到本机IP地址,不过在Windows和Linux下的方法稍有不一样的,下面就来详细介绍下:

Windows下获得IP地址的方法

方法一 使用socket模块

使用拨号上网的话,一般都有一个本地ip和一个外网ip,使用python可以很容易的得到这两个ip 使用gethostbyname和gethostbyname_ex两个函数可以实现

#使用socket模块
import socket
#得到本地ip
localIP = socket.gethostbyname(socket.gethostname())
print"local ip:%s "%localIP
        
ipList = socket.gethostbyname_ex(socket.gethostname())for i in ipList:
    if i != localIP:
       print"external IP:%s"%i

或者

#引入socket模块
import socket
myname = socket.getfqdn(socket.gethostname())
myaddr = socket.gethostbyname(myname)

方法二 使用正则表达式和urllib2模块

该方法获取公网IP使用的是利用其他网站提供的IP检测功能,然后在使用python抓取页面,正则匹配或得。不过该方法比较准确哦

import re,urllib2
from subprocess import Popen, PIPE
       
print "本机的私网IP地址为:" + re.search('/d+/./d+/./d+/./d+',Popen('ipconfig', stdout=PIPE).stdout.read()).group(0)
       
#利用其他网站提供的接口,使用urllib2获取其中的ip
print "本机的公网IP地址为:" + re.search('/d+/./d+/./d+/./d+',urllib2.urlopen("http://www.ip138.com").read()).group(0)

Linux下获得IP地址的方法

上面的方法在Linux下也可以使用,除此之外,Linux下还可以用下面的方法得到本机IP地址。

import socket
import fcntl
import struct
     
def get_ip_address(ifname):
    skt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    print skt
    pktString = fcntl.ioctl(skt.fileno(), 0x8915, struct.pack('256s', ifname[:15]))
    print pktString
    ipString  = socket.inet_ntoa(pktString[20:24])
    print ipString
    return ipString
     
print get_ip_address('lo')
print get_ip_address('eth1')

纯Python的ODBC库 PyPyODBC 1.0 发布

纯Python的ODBC库PyPyODBC 1.0 发布,新版本同时兼容于Python2.x和Python3.3。

PyPyODBC是一个Python ODBC库,它可以被视为著名的PyODBC库的纯Python实现,它们的用法几乎完全一样——就像是PyPy用Python山寨了Python,PyPyODBC用Python山寨了PyODBC。

而基于纯Python代码的特质给PyPyODBC库带来极大的兼容性、可嵌入性和代码移植性——PyPyODBC可以运行在CPython,IronPython和PyPy虚拟机下,可以运行在Windows,Linux平台下,可以运行在Python 3.3、2.4、2.5、2.6、2.7等版本下,可以被嵌入在项目中,而无需在运行环境额外编译和安装Python ODBC库模块。

其他亮点:

简单轻便 – PyPyODBC库只有一个Python脚本文件,代码不超过3000行。你可以很容易就把它嵌入到你的项目中。

内建Access MDB支持 – 在Windows平台上,PyPyODBC即可自行创建Access数据库而无需安装微软Office套件。

代码示例

import pypyodbc
pypyodbc.win_create_mdb('D://database.mdb') 
connection_string = 'Driver={Microsoft Access Driver (*.mdb)};DBQ=D://database.mdb'
connection = pypyodbc.connect(connection_string) 
SQL = 'CREATE TABLE saleout (id COUNTER PRIMARY KEY,product_name VARCHAR(25))'
connection.cursor().execute(SQL)
...

试用PyPyODBC

如果你有一个使用了PyODBC的脚本,如果想试一试PyPyODBC的效果,你要做的就是在这个脚本中注释掉一行代码,换成另一行代码,就像这样:

#import pyodbc
import pypyodbc as pyodbc