打包与发布
1、准备一个空文件夹pack
[root@localhost lianxi]# mkdir pack
2、在pack下面创建一个包 modpack ,还需要一个__init__.py
[root@localhost lianxi]# cd pack
[root@localhost pack]# mkdir modpack
[root@localhost pack]# cd modpack
[root@localhost modpack]# touch __init__.py
[root@localhost modpack]# cd ..
[root@localhost pack]# tree
.
└── modpack
└── __init__.py
1 directory, 1 file
3、在modpack同级目录下,创建 setup.py
[root@localhost pack]# vim setup.py #配置set.py
from setuptools import setup, find_packages
setup(
#包名
name = "modtest",
#官网
url = "http://baidu.com",
#版本
version = "0.0.1",
#指定要打包的模块与包
packages = find_packages(),
#作者
author = "tgzzwjz",
#邮箱
author_email = "123456@qq.com",
#依赖
install_requires = ['xlrd>=1.1.0']
#描述信息
#description = "this is test pack"
)
~
~
[root@localhost pack]# cd modpack
[root@localhost modpack]# vim mod.py
print("i am mod.py")
def func():
print("this is mod.py function")
~
~
~
~
[root@localhost modpack]# cd ..
[root@localhost pack]# tree
.
├── modpack
│ ├── __init__.py
│ └── mod.py
└── setup.py
1 directory, 3 files
4、运行python3 setup.py check 进行语法检查
[root@localhost pack]# python3 setup.py check
running check
#出现running check表示语法正确
5、运行python3 setup.py sdist 生成tar.gz压缩包,会在同目录下生成一个dist目录
[root@localhost pack]# python3 setup.py sdist
running sdist
running egg_info
creating modtest.egg-info
writing modtest.egg-info/PKG-INFO
writing dependency_links to modtest.egg-info/dependency_links.txt
writing requirements to modtest.egg-info/requires.txt
writing top-level names to modtest.egg-info/top_level.txt
writing manifest file 'modtest.egg-info/SOURCES.txt'
reading manifest file 'modtest.egg-info/SOURCES.txt'
writing manifest file 'modtest.egg-info/SOURCES.txt'
warning: sdist: standard file not found: should have one of README, README.rst, README.txt, README.md
running check
creating modtest-0.0.1
creating modtest-0.0.1/modpack
creating modtest-0.0.1/modtest.egg-info
copying files to modtest-0.0.1...
copying setup.py -> modtest-0.0.1
copying modpack/__init__.py -> modtest-0.0.1/modpack
copying modpack/mod.py -> modtest-0.0.1/modpack
copying modtest.egg-info/PKG-INFO -> modtest-0.0.1/modtest.egg-info
copying modtest.egg-info/SOURCES.txt -> modtest-0.0.1/modtest.egg-info
copying modtest.egg-info/dependency_links.txt -> modtest-0.0.1/modtest.egg-info
copying modtest.egg-info/requires.txt -> modtest-0.0.1/modtest.egg-info
copying modtest.egg-info/top_level.txt -> modtest-0.0.1/modtest.egg-info
Writing modtest-0.0.1/setup.cfg
creating dist
Creating tar archive
removing 'modtest-0.0.1' (and everything under it)
[root@localhost pack]# ls
dist modpack modtest.egg-info setup.py
打包好的安装包文件就在dist目录下
6、安装
进入dist目录,利用pip3 install modtest-0.0.1.tar.gz进行安装
[root@localhost pack]# cd dist
[root@localhost dist]# ls
modtest-0.0.1.tar.gz
[root@localhost dist]# pip3 install modtest-0.0.1.tar.gz
WARNING: Running pip install with root privileges is generally not a good idea. Try `pip3 install --user` instead.
Processing ./modtest-0.0.1.tar.gz
Collecting xlrd>=1.1.0 (from modtest==0.0.1)
Downloading https://files.pythonhosted.org/packages/a6/0c/c2a72d51fe56e08a08acc85d13013558a2d793028ae7385448a6ccdfae64/xlrd-2.0.1-py2.py3-none-any.whl (96kB)
10% |███▍ | 10kB
21% |██████▉ | 20kB
31% |██████████▏ | 30kB
42% |█████████████▋ | 40kB
53% |█████████████████ | 51kB
63% |████████████████████▍ | 61kB
74% |███████████████████████▊ | 71kB
84% |███████████████████████████▏ | 81kB
95% |██████████████████████████████▌ | 92kB
100% |████████████████████████████████| 102kB 38kB/s
Installing collected packages: xlrd, modtest
Running setup.py install for modtest ... done
Successfully installed modtest-0.0.1 xlrd-2.0.1
7、测试
[root@localhost dist]# python3
Python 3.6.8 (default, Nov 16 2020, 16:55:22)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from modpack import mod
i am mod.py
>>> mod.func
<function func at 0x7fc8ea870598>
>>> mod.func()
this is mod.py function
>>>