|-- src # 引用时的包名,可随意修改;
| -- http # 子类包名,可随意修改
| --__init__.py
| -- xxx.py
| --__init__.py
| --xxx.py
|--readme.md
|--setup.py # 打包信息
import src
import src.xxx
import src.http
import src.http.xxx
# -*- coding: utf-8 -*-
def src_hello_word():
print('调用src/hello_word.py中方法')
class SrcHelloWord(object):
def __init__(self):
pass
def src_hello_word_class(self):
print('调用src/hello_word.py中class内方法')
打包可以使用distutils、setuptools方式,两种不同的方式主要是在setup.py文件的编写差异
简易模版如下:
# -*- coding: utf-8 -*-
from distutils.core import setup
setup(
name='example-pkg-YOUR-USERNAME-HERE',
version='0.0.1',
packages=['src', 'src.http'] # 此处报名需要罗列,不做罗列时无法import引用
)
执行打包,执行如下命令后会生成一个dist的文件夹,文件夹下有一个.tar.gz的压缩包即为最终打包文件
python setup.py sdist
包安装
python setup.py install
直接解压安装的方式,该模块安装到标准库的制定路径下,卸载时需要删除标准库中整个模块文件夹以及.egg文件
模版如下:
# -*- coding: utf-8 -*-
import os
import setuptools
# 如果readme文件中有中文,那么这里要指定encoding='utf-8',否则会出现编码错误
with open(os.path.join(os.path.dirname(__file__), 'README.md'), encoding='utf-8') as readme:
README = readme.read()
# 允许setup.py在任何路径下执行
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir)))
setuptools.setup(
name="example-pkg-YOUR-USERNAME-HERE", # 库名,需要在pypi中唯一
version="0.0.1", # 版本号
author="Example Author", # 作者
author_email="[email protected]", # 作者邮箱(方便使用者发现问题后联系我们)
description="A small example package", # 简介
long_description=README, # 详细描述(一般会写在README.md中)
long_description_content_type="text/markdown", # README.md中描述的语法(一般为markdown)
url="https://github.com/pypa/sampleproject", # 库/项目主页,一般我们把项目托管在GitHub,放该项目的GitHub地址即可
packages=setuptools.find_packages(), #默认值即可,这个是方便以后我们给库拓展新功能的
classifiers=[ # 指定该库依赖的Python版本、license、操作系统之类的
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
],
install_requires=[ # 该库需要的依赖库
'你的库依赖的第三方库(也可以指定版本)',
# exapmle
'pyautogui',
'Django >= 1.11, != 1.11.1, <= 2',
],
python_requires='>=3.6',
)
打包方式
pip3 install --user --upgrade setuptools wheel twine
python setup.py sdist bdist_wheel
包安装
python setup.py install
直接解压安装的方式,只会将.egg文件写入python的site-packages中(build执行文件存在解压后文件夹内),卸载时仅删除该.egg文件即可