我们在使用Python时经常会使用官方或他人发布的第三方包,如在数据分析时经常使用到的numpy
那么我们如何自定义一个自己的包并安装呢?
这里我们假定自定义一个叫anyuzkits的包,首先创建一个项目(项目名随便取,不需要与包名anyuzkits相同),
项目的层级结构如下:
图.1
首先在项目下创建src包和setup.py文件
其中setup.py文件内容如下:
from distutils.core import setup
from setuptools import find_packages
setup(name = 'anyuzkits', # 包名
version = '2018.6.27', # 版本号
description = '',
long_description = '',
author = '',
author_email = '',
url = '',
license = '',
install_requires = [],
classifiers = [
'Intended Audience :: Developers',
'Operating System :: OS Independent',
'Natural Language :: Chinese (Simplified)',
'Programming Language :: Python',
'Programming Language :: Python :: 2',
'Programming Language :: Python :: 2.5',
'Programming Language :: Python :: 2.6',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.2',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Topic :: Utilities'
],
keywords = '',
packages = find_packages('src'), # 必填
package_dir = {'':'src'}, # 必填
include_package_data = True,
)
然后在src包下建一个__init__.py和anyuzkits包(最后的包名叫anyuzkits这里的包就命名为anyuzkits)
其中__init__.py中什么都不用写(注:init两边是两个下划线)
最后在anyukits包下建模块文件去实现你这个包所要实现的功能
这里我建了两个文件DataSplit.py和ReadFile.py文件分别实现不同的功能,以DataSplit.py为例,这个文件中写了一个output方法,作用是输出一句"hello word"。
接下来在anyuzkits包下再建一个__init__.py文件
__init__.py文件内容如下:
其中 from __future__ import absolute_import 必不可少,from .模块名 import * 是导入你所写的模块,否则这个模块就不能被识别。最后保存所有文件。
按照图1的层级结构所建的完整项目如下:
接下来进入到项目所在文件目录,也就是第一步中创建的setup.py文件目录
在此目录下打开Powershell窗口(按住shift右击空白处),输入:python setup.py sdist
这时候文件夹下多了一个dist文件夹
dist文件夹下有一个"包名-版本号"d的压缩文件(在其他电脑上安装只需要把这个压缩文件复制过去并按照后续的操作步骤继续即可),解压并打开:
在此目录下打开Powershell窗口(按住shift右击空白处),输入:python setup.py install
安装成功,打开python查看能否使用: