python构建并发布自己的包

这篇具有很好参考价值的文章主要介绍了python构建并发布自己的包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、背景

我们平时使用pip install xxx安装包,使用包,但是如果:我们拉取pypi社区的某GitHub项目源码后,发现其源码某文件中会出现:

import xxx.module_A
from xxx import module_A
import xxx.module_A as A
from xxx import module_A as A

这种字样

注意:这里的xxx是某文件所在目录的包名,也就是其所属包的名字

注意:不可以直接导入包,python是一定要落脚于模块的

那么直接运行源码,会出现依赖的问题;如何解决这个问题,是本博客解决的事情

类似于下图的依赖过程:
python构建并发布自己的包,其他,python,开发语言,pypi,包,模块
tool.py依赖my_module.py时,平时都是直接引入模块名,但是在发布后的包中,会出现import my_package.my_module as my_module
python构建并发布自己的包,其他,python,开发语言,pypi,包,模块
和我们认知中不一样,并且直接运行这个脚本会出错:
python构建并发布自己的包,其他,python,开发语言,pypi,包,模块
所以我们需要搞清楚这个包为什么这样引入

二、实验过程

包的文件结构:

注意:实际的包是my_package,而不是这个项目
python构建并发布自己的包,其他,python,开发语言,pypi,包,模块
与第一部分一样,tool依赖了my_module

使用时的测试代码:

import my_package.tool as tool

if __name__ == "__main__":
    print("hello world")
    tool.my_tool()

构建包

在项目目录下(而不是实际的包目录下),新建setup.py文件:

from setuptools import setup, find_packages

VERSION = '0.0.1' 
DESCRIPTION = 'My first Python package'
LONG_DESCRIPTION = 'My first Python package with a slightly longer description'

# 配置
setup(
       # 名称必须匹配文件名 'verysimplemodule'
        name="my_package", 
        version=VERSION,
        author="masteryi",
        author_email="<youremail@email.com>",
        description=DESCRIPTION,
        long_description=LONG_DESCRIPTION,
        packages=find_packages(),
        install_requires=[], # add any additional packages that 
        # 需要和你的包一起安装,例如:'caer'
        
        keywords=['python', 'first package'],
        classifiers= [
            "Development Status :: 3 - Alpha",
            "Intended Audience :: Education",
            "Programming Language :: Python :: 2",
            "Programming Language :: Python :: 3",
            "Operating System :: MacOS :: MacOS X",
            "Operating System :: Microsoft :: Windows",
        ]
)

测试包

执行python setup.py install

本地安装自己写的包:

成功安装:
python构建并发布自己的包,其他,python,开发语言,pypi,包,模块
在测试文件测试,成功输出:

PS D:\project\test_my_pkg> python .\test.py
hello world
this is my_module
this is sub_pkg's m_1
this is sub_pkg's m_2

三、心得

构建包的话,各个模块需要统一引入包名作为所构建包的名称,子包也是一样的处理,否则会出现找不到包的问题

如果按照自己的构建项目的方式构建包,就会出现包的路径有问题的情况文章来源地址https://www.toymoban.com/news/detail-680123.html

参考资料

  • https://www.freecodecamp.org/chinese/news/build-your-first-python-package/

到了这里,关于python构建并发布自己的包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vue3.x + vite4.3构建属于自己的组件库并发布npm包

    欢迎点击领取 -《前端开发面试题进阶秘籍》:前端登顶之巅-最全面的前端知识点梳理总结 *分享一个使用比较久的🪜 在国内的项目研发过程中,使用vue框架的项目占比很大,同样延伸出了很多非常优秀的UI组件库,比如element-plus、ant-design等;优势:资源较少,快速开发,丰

    2024年02月02日
    浏览(35)
  • 构建自己的ChatGPT:从零开始构建个性化语言模型

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月15日
    浏览(31)
  • Anaconda查看自己目前安装的包

    本文解决如何查看Anaconda中目前安装的包,如何查看特定的某个包的版本 一、查看所有的已经安装好的包 第一步:打开Anaconda Prompt  第二步:pip list 即可查看目前所安装的所有包  二、查看某一个特定的包版本 第一步:打开Anaconda Prompt 后,进入python环境,然后进行查询 (以

    2024年02月06日
    浏览(29)
  • npm更新和管理已发布的包

    目录 1、更改包的可见性 1.1 将公共包设为私有 ​编辑 使用网站 使用命令行 1.2 将私有包公开  使用网站 使用命令行 2、将协作者添加到用户帐户拥有的私有包 2.1 授予对Web上私有用户包的访问权限 2.2 从命令行界面授予私有包访问权限 2.3 授予对私有组织包的访问权限

    2024年02月14日
    浏览(31)
  • 自己开发或者修改的组件包如何发布到npm官方市场

    1、注册账号 打开npm官方网站: www.npmjs.com; 进行注册 注册需要用户名,密码和邮箱, 当注册完成后需打开邮箱进行验证(邮箱不验证无法上传) 二、  在需要打包发布的文件夹package.json所在目录下 执行命令:npm init  按照提示修改后一路回车就行; package name 就是安装命令

    2024年02月08日
    浏览(30)
  • HBuilderx发布苹果的包需要注意什么

    在HBuilderX中发布苹果的包,需要注意以下几点: 开发者账号注册:在发布应用到App Store之前,需要先注册一个苹果开发者账号。注册过程较为繁琐,需要提供个人信息并支付年费。应用标识和证书:在发布iOS应用之前,需要在苹果开发者中心创建应用标识和应用证书。应用标

    2024年01月20日
    浏览(36)
  • 【Maven教程】(一)入门介绍篇:Maven基础概念与其他构建工具:理解构建过程与Maven的多重作用,以及与敏捷开发的关系 ~

    \\\" Maven \\\"可以翻译为 “知识的积累者” 或 “专家”。这个词源于波斯语,意为广受尊重和富有智慧的人。在软件开发领域中,Maven作为Apache 组织中的一个颇为成功的开源项目,它是一个非常流行的构建工具,它在项目管理、依赖管理和构建自动化方面提供了强大的功能和支持

    2024年02月12日
    浏览(31)
  • 我发布了自己第一个由ChatGPT辅助开发的开源项目goattribute

    前两天在工作过程中又遇到了一直以来困惑我的一个问题,就是Go配置项的管理问题。 在开发一个新项目的时候,往往涉及到配置项的管理。个人小项目可能会通过配置文件来传入、环境变量来传入,也可能通过命令行参数来传入,公司级别的项目还可能用到各种各样的con

    2024年02月03日
    浏览(22)
  • 如何确认linux的包管理器是yum还是apt,确认之后安装其他程序的时候就需要注意安装命令

    打开终端 输入apt,下图中提示未找到命令,则基本上包管理工具就是用yum的  输入yum,我们看到有打印信息,则说明包管理工具是yum的,离线安装命令使用rpm

    2024年02月09日
    浏览(32)
  • Jenkins构建错误,出现相对应的包找不到

    检查本地和远程仓库中的依赖是否一致,可以通过以下步骤解决: 检查本地项目的pom.xml文件,确保所有的依赖都被声明并且版本正确。 在相对应的pom文件找出缺少的那个包 ,例如我报错是缺少org.springframework.amqp.core不存在 就说明缺少amqp相对应的依赖,在pom文件里面增加相

    2024年02月11日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包