生信小木屋

Wheel和Egg都是python的打包格式,目的是支持不需要编译或制作的安装过程,实际上也是一种压缩文件,将.whl的后缀改为.zip即可可看到压缩包里面的内容。按照官网说法,wheels是发行版Python的新标准并且要取代.egg

运行python setup.py install命令安装Python包时,最终的结果可以是Egg包(.egg)或Wheel包(.whl),具体取决于项目的配置和设置。

在早期阶段,Python项目通常使用Egg包作为分发的格式。Egg包是一种基于Python的打包格式,可以包含源代码、依赖项和其他资源。但是,随着时间的推移,Wheel包成为更为常见和推荐的分发格式。

Wheel包是一种二进制分发格式,它提供了更好的性能和安装速度。它可以包含预编译的二进制文件、C语言扩展模块和其他必要的资源。Wheel包的文件名以.whl作为扩展名。

在运行python setup.py install命令时,如果项目配置为生成Egg包,那么安装过程将生成Egg包并将其安装到Python环境中。如果项目配置为生成Wheel包,那么安装过程将生成Wheel包并将其安装到Python环境中。

通常情况下,现代的Python项目会更倾向于使用Wheel包进行分发和安装,因为它具有更好的性能和跨平台性。

distutils

hello.py

def hello_fun():
 print "i say hello to you"

setup.py

from distutils.core import setup
setup(
 name="hello_module",
 version="1.0",
 author="ljk",
 author_email="wilber@sh.com",
 py_modules=['hello'],
)

setuptools

printtest.py

def test():
  print('print test')

setup.py

from setuptools import setup
setup(name='printtest',
   version='1.0', 
   py_modules=['printtest'],
   )
python setup.py sdist
python setup.py bdist_wheel
python setup.py bdist_egg

https://www.cnblogs.com/wuzhiblog/p/python_make_egg_or_whl.html

(base) ➜  01 tree dist 
dist
├── printtest-1.0
│   ├── build
│   │   ├── bdist.linux-x86_64
│   │   └── lib
│   │       └── printtest.py
│   ├── dist
│   │   └── printtest-1.0-py3.8.egg
│   ├── PKG-INFO
│   ├── printtest.egg-info
│   │   ├── dependency_links.txt
│   │   ├── PKG-INFO
│   │   ├── SOURCES.txt
│   │   └── top_level.txt
│   ├── printtest.py
│   ├── __pycache__
│   │   └── printtest.cpython-38.pyc
│   ├── setup.cfg
│   └── setup.py
└── printtest-1.0.tar.gz
python setup.py install

直接在setup.py的同目录放置一个setup.cfg:

[easy_install]
index_url = https://pypi.tuna.tsinghua.edu.cn/simple
import printtest
printtest.test()

参考

https://www.jb51.net/article/180223.htm
https://www.jb51.net/article/138538.htm