文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

一日一技:Setup.py里面的两个小技巧

2024-11-29 23:31

关注

pip安装后执行代码

今天公众号粉丝群里面,有同学提问:

图片

这个同学自己开发了一个Python包,这个包在使用pip安装时,会产生一些临时文件。他希望安装完成以后,能够自动清理这些临时文件。

要实现这个需求,可以使用Python自带的setuptools来实现。代码如下:

import os
from setuptools import setup, find_packages
from setuptools.command.install import install

class CustomInstallCommand(install):
    """自定义安装命令,执行标准安装后跟自定义代码。"""
    def run(self):
        install.run(self)
        print("执行自定义安装后的代码...")
        os.remove('需要删除的文件1路径')
        os.remove('需要删除的文件2路径')
        print('这里可以写任意代码')

setup(
    name='your_package_name',
    versinotallow='0.1',
    packages=find_packages(),
    cmdclass={
        'install': CustomInstallCommand,
    },
)

当你把代码上传到Pypi以后,用户依然是使用pip install xxx来安装这个包。安装完成以后,就可以自动删除临时文件了。

额外依赖

大家在安装某些第三方库时,可能会看到它的安装说明里面,让你这样写:

pip install "xxx[yyy]"

如下图所示:

图片

这种写法是什么意思呢?实际上这叫做可选的额外依赖(extras)。有一些功能比较强大的第三方库,他需要安装很多依赖。但是如果我只需要使用其中的特定某个功能,那么实际上只需要安装这个功能需要的依赖就可以了。根本没有必要安装所有依赖。

这种情况下,就可以使用额外依赖。在setup.py里面,添加extras_require参数:

setup(
    name='your_package_name',
    versinotallow='0.1',
    packages=find_packages(),
    install_requires=['requests']
    extras_require={
     'excel': ['pandas>=1.20.0'],
     'lxml': ['lxml'],
     'all': ['pandas>=1.20.0', 'lxml']
    },
)

那么当用户使用pip install xxx安装这个包时,默认只会安装requests一个依赖。当使用pip install "xxx[lxml]"时,会安装requests和lxml。当使用pip install "xxx[all]"时,会安装requests、lxml和pandas。

来源:未闻Code内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯