python egg打包和安装模块

setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的。用户在使用setuptools创建的包时,并不需要已安装setuptools,只要一个启动模块即可。

通过setuptools可以制作自己的egg和whl包,使用步骤如下

1. 创建要打包的python文件

创建setuptools目录,我再改目录下测试setuptools的使用

mkdir setuptools
cd setuptools

创建源码文件

mkdir jdf
touch __init__.py

#__init__.py
def test():
    print('Hello, i am test')

if __name__ == '__main__':
    test()

在根目录setuptools创建setup.py文件;setup.py 其实是 python 工具包distutils的配置文件,setuptools就是基于distutils来做的。 在 setup.py 中通过setup函数来配置打包信息

#setup.py
from setuptools import setup, find_packages
setup(
    name = "jdf",#打包的名称
    version = "1.0",
    packages = find_packages(),#要打包的python文件目录,默认是当前目录下所有文件下的python文件
    description = "this is a python setup test.",#安装包描述
    long_description = "....",
    author = "jdf",
    author_email = "jdf@qq.com",
    home_page = "https://blog.csdn.net/jiadongfengyahoo?spm=1000.2115.3001.5343",

    license = "GPL",
    keywords = ("test", "egg", "whl"),
    platforms = "unbuntu 18.04",
    url = "",
)

万事具备,只欠东风

2. egg文件

2.1 生成egg文件

运行setup.py,生成egg文件

python setup.py  bdist_egg
#tree -d
.
|-- dist
|-- jdf.egg-info
`-- src

运行成功后,会在jdf.egg-info目录生成egg文件

# tree jdf.egg-info 
jdf.egg-info
|-- PKG-INFO
|-- SOURCES.txt
|-- dependency_links.txt
`-- top_level.txt

在dist中生成egg文件,egg文件是一个zip压缩吧,里面内容信息如下;egg里面存储了jdf.egg-info中的配置文件和所有配置的包的python源文件

# file dist/jdf-1.0-py3.8.egg 
dist/jdf-1.0-py3.8.egg: Zip archive data, at least v2.0 to extract

# unzip -l  dist/jdf-1.0-py3.8.egg 
Archive:  dist/jdf-1.0-py3.8.egg
  Length      Date    Time    Name
---------  ---------- -----   ----
      217  2021-09-04 07:52   EGG-INFO/PKG-INFO
      142  2021-09-04 07:52   EGG-INFO/SOURCES.txt
        1  2021-09-04 07:52   EGG-INFO/dependency_links.txt
        4  2021-09-04 07:52   EGG-INFO/top_level.txt
        1  2021-09-04 07:52   EGG-INFO/zip-safe
       84  2021-09-04 07:14   src/__init__.py
      297  2021-09-04 07:52   src/__pycache__/__init__.cpython-38.pyc
---------                     -------
      746                     7 files

```python

### 1.2 安装egg文件

```python
python setup.py install 或者 pip install jdf-1.0-py3.8.egg

2.2 使用安装的包

使用jdf包中__init__.py中的test函数

# python
Python 3.8.5 (default, Sep  4 2020, 07:30:14) 
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from jdf import test
>>> test
<function test at 0x7f6ecb682700>
>>> test()
Hello, i am test
>>> 

2.3 删除安装的包

egg安装包的位置

# ls /root/anaconda3/lib/python3.8/site-packages/ | grep jdf
jdf-1.0-py3.8.egg

可以通过pip查找该安装的包

# pip list | grep "jdf"

通过pip删除jdf模块

# pip uninstall jdf
Found existing installation: jdf 1.0
Uninstalling jdf-1.0:
  Would remove:
    /root/anaconda3/lib/python3.8/site-packages/jdf-1.0-py3.8.egg
Proceed (y/n)? y
  Successfully uninstalled jdf-1.0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值