python模块管理框架

 

 

python下包管理框架记录

  

  测试环境:ubuntu16.04下的~/目录下。

 一、我们的测试目录结构如下:

  当前目录在:~/chap7,使用tree命令看到当前目录下的文件及文件夹结构如下:

  

  其中三个__init__.py为空文件,

  simpledatasetloader.py里定义一个类:

  

  simplepreprocessor.py里定义另一个类:

  

  在根文件knn.py中导入格式如下:

  

  在knn.py这样配置,我们希望from包直接导入包中模块的类名。

 二、模块与包

  模块:实质上就是一个以.py结尾的文件,可以被其他py文件调用。

  包:即包所在的文件夹里包含一个__init__.py的文件,即在这里的pyimagesearch、datasets、preprocessing分别为三个包。

 三、运行测试

  运行:python knn.py显示结果如下:

  

  原因是,我们没有配置__init__.py文件。

  我们在python中,from sklearn.preprocessing import LabelEncoder,则可以直接从目录包中导入类名,

从sklearn的git目录下的neighbors的__init__.py看配置如下:

  

  因此,我们将preprocessing文件夹下的__init__.py添加如下:

  

  将datasets文件夹下的__init__.py添加如下:

  

  保存后,此时,再次执行python knn.py即可正确显示如下:

  

  因此,在以包为管理方式,来配置不同的包管理时,可参考python中某个包的配置方式来配置。

  如果在datasets下还有其它模块需要导入,可按此方式即可。

原文地址:https://www.cnblogs.com/paladinzxl/p/9506357.html