writing……
前言
参考信息
https://www.jianshu.com/p/19f1e564a29d
https://www.jianshu.com/p/00abb504e137
https://blog.csdn.net/winycg/article/details/80025432
https://www.cnblogs.com/potato-chip/p/9106225.html 《setup参数详解》
https://www.cnblogs.com/cposture/p/9029023.html 《Python 包构建教程》
基础概念
module
pure python module
python模块。python编写,一个module对应的就是一个.py
文件。extension module
扩展模块。用底层语言编写的,如c/c++,java等。package
包。有__init__.py
文件的文件夹,改文件夹内所有module的集合。- 有
__init__.py
的目录表示包,没有则表示普通目录。
__all__
可以指定批量引入。在.py
文件,如果不声明__all__
,则模块中所有的变量和函数均可以使用。如果使用了__all__
及from module import *
的组合,则只能部分可见。
私有变量/方法
from xxx import *
不能导入或使用私有变量及方法。(以单下划线或双下划线为前缀)import xxx
能导入或使用私有变量及方法。
# module.py
__all__ = ['a']
a = 1
b = 2
def f():
print("hello")
import module
a # 可见
b # 可见
f() # 可见
from module import *
a # 可见
b # 不可见
f() # 不可见
目录结构
setup
在顶层目录需要有一个setup.py
文件,用来编辑package的基础信息,
setup.py参数(常用的)
- Name:打包文件的名称。
- version:版本号。
- author:作者。
- author_email:联络邮箱。
- license:开源协议类型。
- package:打包的文件夹。如文件夹a有子文件夹b,则以
a.b
表示。 - install_requires:需要安装的依赖包。
示例
# example for ta-lib
import setuptools
requires = {
"install_requires": ["numpy"],
"setup_requires": ["numpy"]
}
setuptools.setup(
name='TA-Lib',
version='0.4.24',
description='Python wrapper for TA-Lib',
long_description=long_description,
long_description_content_type='text/markdown',
author='John Benediktsson',
author_email='mrjbq7@gmail.com',
url='http://github.com/mrjbq7/ta-lib',
download_url='https://github.com/mrjbq7/ta-lib/releases',
license='BSD',
classifiers=[
"License :: OSI Approved :: BSD License",
"Development Status :: 5 - Production/Stable",
"Operating System :: Unix",
"Operating System :: POSIX",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Cython",
"Topic :: Office/Business :: Financial",
"Topic :: Scientific/Engineering :: Mathematics",
"Intended Audience :: Developers",
"Intended Audience :: Science/Research",
"Intended Audience :: Financial and Insurance Industry",
],
packages=['talib'],
ext_modules=ext_modules,
cmdclass=cmdclass,
install_requires=requires)
安装/发布
PyPi
打包及安装
工具包
- setuptools
- wheel
压缩包格式
python setup.py sdist
或python setup.py bdist
,将所有内容打包,放于dist目录下。
whl格式
pip wheel --wheel-dir=输出目录 打包目录
,如pip wheel --wheel-dir=./dist ./
表示将当前目录打包并输出至dist目录。
或者python setup.py bdist_wheel
,生成build,dist,egg-info目录,whl在dist目录里。
安装whl
pip install xxxx.whl