egg文件制作与安装

Python Egg 文件打包与安装

python的egg文件有点像java中的jar文件,是一个工程打包文件,便于安装部署,仅此一点,给多少pythoner带来了多少激动。

如何制作egg文件呢?see官方文档http://peak.telecommunity.com/DevCenter/PythonEggs,
到http://pypi.python.org/pypi/setuptools下载setuptools包,然后安装:

python setup.py

1.制作egg文件

下面开始egg文件的制作:
在要打包的文件夹父目录中新建setup.py

#setup.py
view plaincopy to clipboardprint?
01.#coding=utf8   
02.  
03.from setuptools import setup, find_packages   
04.  
05.setup(   
06.    name = "eggtest",   
07.    version = "0.1",   
08.    packages = find_packages(),   
09.  
10.    description = "egg test demo",   
11.    long_description = "egg test demo",   
12.    author = "lidehong",   
13.    author_email = "idehong@gmail.com",   
14.  
15.    license = "GPL",   
16.    keywords = ("test", "egg"),   
17.    platforms = "Independant",   
18.    url = "http://blog.youkuaiyun.com/hong201/",    
19.       
20.)  
#coding=utf8

from setuptools import setup, find_packages

setup(
    name = "eggtest",
    version = "0.1",
    packages = find_packages(),

    description = "egg test demo",
    long_description = "egg test demo",
    author = "lidehong",
    author_email = "idehong@gmail.com",

    license = "GPL",
    keywords = ("test", "egg"),
    platforms = "Independant",
    url = "http://blog.youkuaiyun.com/hong201/", 
    
)
  

name:包名
version:版本
packages :打包的文件
description:描述信息
author:作者
url:下载地址

执行python setup.py bdist_egg命令之后,在dist目录下会生成egg文件,egg文件其实只是一个压缩包

制作其他安装文件:

python setup.py build  # 编译
python setup.py sdist  # zip格式包
python setup.py bdist_wininst # exe格式包
python setup.py bdist_rpm # rpm格式包

注: 查看更多命令:

执行 python setup.py --help-commands后可以看到相关可用命令
Standard commands:
  build             build everything needed to install
  build_py          "build" pure Python modules (copy to build directory)
  build_ext         build C/C++ extensions (compile/link to build directory)
  build_clib        build C/C++ libraries used by Python extensions
  build_scripts     "build" scripts (copy and fixup #! line)
  clean                clean up temporary files from 'build' command
  install               install everything from build directory
  install_lib          install all Python modules (extensions and pure Python)
  install_headers   install C/C++ header files
  install_scripts     install scripts (Python or otherwise)
  install_data       install data files
  sdist                   create a source distribution (tarball, zip file, etc.)
  register              register the distribution with the Python package index
  bdist                  create a built (binary) distribution
  bdist_dumb       create a "dumb" built distribution
  bdist_rpm          create an RPM distribution
  bdist_wininst     create an executable installer for MS Windows
  upload              upload binary package to PyPI

 2.egg文件安装

羡慕cetos的yum,羡慕Ubuntu的apt-get,羡慕ruby的gem,现在python的egg成熟了,强大了,不用再羡慕了。

如果已经把egg文件下载到了本地,则easy_install xxx.egg就ok了,如何有依赖,则会自动下载安装,省心了。如果没有下载下来,网络安装更爽,直接 easy_install 包名,此时喝点咖啡休息一下,回过神来时已经安装好了。唯一一点不好的感觉是,easy_install现在还不支持自动卸载,网上流传的用 easy_install -m xxx来卸载,是不行了,这个命令式用来安装同一个包的多个版本的。

3.egg文件卸载

目前不能自动删除egg包,只能手动删除,而手动删除很简单

vim $python_path/Lib/site-packages/easy-install.pth

删除到egg包名所在行,

:wq

重启python环境。

这样做了之后egg包还是遗留下来了,没有被清除,不过这个不用担心,egg包已经不能被引用到python环境了,因为包名中不能有连字符-,而egg文件名中却包含连字符。

<think>好的,用户想了解Python的.egg文件格式及其用途。首先,我需要回忆一下.egg的基本概念。记得以前Python使用egg作为包的打包格式,类似于现在的wheel。egg文件通过easy_install工具安装,不过现在更推荐使用pip和wheel。但egg在旧项目中可能还会遇到。接下来,要解释egg的用途。它主要用于分发Python包,包含源代码、元数据和依赖信息。用户安装后,可以直接导入使用。另外,egg是压缩文件,可能以.egg扩展名或目录形式存在。需要提到setuptools在创建egg中的作用,以及和distutils的关系。 然后,用户可能想知道egg的结构。比如里面有哪些目录和文件,比如EGG-INFO存放元数据,实际的代码放在包目录里。可以举例说明,比如一个简单的项目打包成egg后的结构。还要注意egg的优缺点。优点是在当时方便了包的分发和安装,但缺点比如性能问题,还有wheel的对比。可能需要提到为什么wheel取代了egg,比如更快的安装速度,更现代的格式支持。 用户的问题可能还涉及如何创建egg文件。需要简要说明使用setuptools的setup.py命令,比如pythonsetup.pybdist_egg。但也要提醒现在推荐使用wheel和twine上传到PyPI。最后,生成相关问题。可能包括如何安装eggwheel的区别,egg过时后如何处理旧项目,以及egg的安全性问题。确保问题覆盖用户的潜在需求,比如迁移或维护旧代码时遇到的问题。需要检查引用是否正确,用户提供的引用提到egg包和easy_install的热门程度,以及制作egg的方法。所以引用[^1]可以放在讨论egg用途和制作方法的部分。确保回答结构清晰,分点说明,使用正确的LaTeX格式,比如提到版本号时用$v3.6$这样的格式,如果有数学表达式的话。但当前内容可能不需要数学公式,所以主要注意代码块和段落格式。</think>### Python .egg文件格式及用途解析 #### 一、核心定义 `.egg`是Python早期的软件分发格式,本质是**ZIP压缩包**,包含Python模块、资源文件和元数据,通过`setuptools`工具生成,支持以下特性: - 依赖关系声明(`install_requires`字段) - 命名空间包管理 - 跨平台兼容性(包含纯Python和C扩展模块) - 自动生成入口点(如命令行工具) #### 二、文件结构示例 典型.egg文件解压后包含: ``` mypkg-1.0.egg/ ├── EGG-INFO/ │ ├── PKG-INFO # 包描述信息 │ ├── requires.txt # 依赖清单 │ └── top_level.txt # 顶层模块列表 └── mypkg/ # 实际代码目录 ├── __init__.py └── core.py ``` #### 三、创建使用 通过`setup.py`生成.egg: ```python from setuptools import setup setup( name="mypkg", version="1.0", packages=["mypkg"], install_requires=["requests>=2.25"] ) ``` 执行命令生成: ```bash python setup.py bdist_egg # 生成dist/mypkg-1.0-py3.8.egg ``` 安装方式: ```bash easy_install mypkg-1.0-py3.8.egg # 传统方式 pip install mypkg-1.0-py3.8.egg # 新版pip支持 ``` #### 四、历史演进 1. **2004-2013**:`easy_install`+`.egg`主导时期 2. **2013年后**:`wheel`格式(.whl)逐步替代,优势包括: - 更快的二进制安装速度 - 更好的C扩展支持 - 避免`__init__.py`劫持问题 3. **2020年后**:PyPI官方停止接受新egg包上传[^1] #### 五、兼容性注意 - Python 3.12+已移除`pkg_resources`模块(原egg解析核心) - 现存egg包可通过`pip>=20.3`安装,但推荐转换为wheel格式: ```bash pip convert oldpkg.egg -o wheelhouse/ ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值