setup.py方式打包自己的python代码并可以用pip install安装

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

所需文件及目录规范

注意setup.py文件和MANIFEST.in文件需要放在和你需要打包的目录同一级下,例如我这里需要打包的就是webconsole文件夹(这里webconsole文件夹指的是业务代码文件夹也就是我下图圈出来的文件夹,而不是最外层那个webconsole项目目录文件夹,因为我这里起了相同的文件夹名称,怕各位混淆所以解释一下)。静态文件最好也放在同一级目录下,当然放在webconsole这种业务文件夹内部也是可以的,这个具体看需求情况。
python setup.py,python,pip,github
上面那张图大家就先大概明确一下具体是干什么的, 我后面调整了目录结构, 将static文件夹和templates文件夹都放到了业务代码webconsole文件夹下, 这里解释下为什么, 如果像我上图一样的话,最后打包完, pip install 自己的包, 那么static| templates| webconsole 这三个文件夹就会分散在各处,而不是都在一个webconsole包下.

我后面的内容都会以下图的目录结构来讲解
python setup.py,python,pip,github

示例演示

这里是指定我需要把这两个文件夹下的文件打包进去, 其中websocket/static/** 指的是业务文件夹websocket下的static文件夹下所有的文件包括子文件夹递归所有文件,
websocket/templates/* 指的是业务文件夹websocket下的, 不递归子文件夹
python setup.py,python,pip,github

其中MANIFEST.in文件的语法如下图所示,具体内容参考官方文档
python setup.py,python,pip,github
下面的的setup文件没什么好说的,网上有很多解释,稍微贴一点用到的

setup() 函数中的部分参数含义如下:

name:包的名称。
version:包的版本号。
description:包的简要描述。
packages:包含的模块或包的列表。
install_requires:该包所依赖的其他包。
classifiers:该包适用的 Python 版本、支持的操作系统、遵循的协议等信息。

python setup.py,python,pip,github

打包命令需要在项目文件夹下,以我的项目为例也就是项目文件webconsole目录下,执行命令

python setup.py sdist bdist_wheel

python setup.py,python,pip,github

完成后会在项目文件夹下生成一个dist文件夹,里面包含了两个文件,如图所示
python setup.py,python,pip,github

如果改动了上面打包的两个文件,setup.py文件和MANIFEST.in,那么一定一定一定要先删除下图的这个文件夹,不然打包还是用的上一次的配置,这点很坑!!!
python setup.py,python,pip,github

打包静态文件补充说明

这里再解释一下把静态资源打包进去的问题. 首先明确一下,我需要打包的是我的业务代码文件夹webconsole下的所有东西, 以及最外层的项目文件夹webconsole下的templates和static目录下的所有东西

这里有两个点需要注意下, 第一个是你想打包静态文件首先要能扫描到你的文件夹, 这里setup.py中的packages我写的是find_packages(), 而把webconsole注释掉了, 是因为我想要扫描项目文件夹webconsole下的所有文件夹及内容, 这样保险一点.
如果只想要webconsole业务文件下的文件,其余的不需要, 那就写webconsole就行了

然后我需要将静态文件打包进去,有两种方式:

第一种是在setup.py的package_data中指定

注意这里的 static/** 指的是static文件夹下所有递归的文件都会被放进去, 而templates/* 这个只有一个 * 星号指的是就只放templates下的文件,不递归其内部的文件夹 当然这里的 static 文件夹和 templates文件夹都是指的前面一步 setup.py文件中 packages 这一属性所扫描到的包下的内容文件
python setup.py,python,pip,github

第二种方式就是在MANIFEST.in文件中指定, 此时setup.py中的package_data属性就可以注释掉了,只需要在MANIFEST.in文件中写include规则,如下图,(不推荐,虽然可以把静态文件打包到包里,但是pip install的时候,包里面的一部分静态文件install进去了,一部分没有install进去,不知道为啥,有兴趣的可以自行研究

python setup.py,python,pip,github

引用自己打的包

在其他项目中如果想引用自己打的包,那么直接pip install tar包文件路径,就可以把自己的包引入进项目里了。

pip install /path/to/your/package/dist/mypackage-0.1.0.tar.gz

如果pip install报错No module named ‘setuptools.command.build’,那么可能是setup版本过高或过低,我这边是过高了,所以卸载了原来的版本(67.6.0)重新装了个低版本(65.6.3)。文章来源地址https://www.toymoban.com/news/detail-858914.html

到了这里,关于setup.py方式打包自己的python代码并可以用pip install安装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 解决pip报错“python setup.py egg_info did not run successfully.”

    网上有很多关于这个错误的文章,我想说的是这个报错本身什么也说明不了,因为真正有价值的报错是后面那一长串代码的报错信息。以我为例,我遇到的问题是: 这个报错显示在某某文件中,本该为str类型的对象实际上并非是str类型。因此我选择打开 File “D:anacondaenvs

    2024年02月16日
    浏览(52)
  • python setup.py install报错“error: can‘t create or remove files in install directory”

    问题描述: 在服务器上配置安装pip时候缺少setuptools,安装setuptools报错:   warnings.warn( error: can\\\'t create or remove files in install directory 有的朋友使用 即可解决。 但是,我使用了之后报错 右下角报错且让我打开帮助: Troubleshoot Visual Studio Code Integrated Terminal launch failures  这位腾腾任

    2024年02月06日
    浏览(47)
  • 解决pip安装pygame提示python setup.py egg_info did not run successfully.│ exit code: 1错误

    当使用命令【 pip install pygame 】进行安装时提示【 Preparing metadata (setup.py) ... error error: subprocess-exited-with-error × python setup.py egg_info did not run successfully. │ exit code: 1 ╰─ [77 lines of output] 】报错信息如下图所示:

    2024年02月03日
    浏览(38)
  • python distutils打包C/C++模块,执行python setup.py build_ext --inplace时报错cl

    python可以把C/C++代码编译并打包为pyd模块,从而可以使python脚本直接调用C/C++模块功能。 我在执行python setup.py build_ext --inplace时遇到了缺失cl.exe的错误提示,然后用pip安装了cl。 再次编译,提示cl: error: no such option: -I,改变cl版本仍然不行,百思不得其解。 后来意识到C/C++模块

    2024年02月06日
    浏览(39)
  • 【问题记录】Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build-*

            在Linux中使用pip安装命令时出现报错:Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build-*         安装了不适合当前Python版本的pip,例如Python3.5安装了带有f-字符串(Python3.5后才支持的一种新的增强型字符串格式化方式)代码的pip         方法一:更新

    2024年02月16日
    浏览(48)
  • Command “python setup.py egg_info“ failed with error code 1 in /tmp/pip-build-... 解决方法

    今天在虚拟机上配置Python的环境,安装pylint的时候报错: 一开始以为是pip不够新,于是更新了一下pip: 提示更新成功,但安装pylint依旧报同样的错。 仔细阅读黄字提示后发现:不应该使用sudo,去掉sudo后尝试安装: 果然就没有问题了。

    2024年02月12日
    浏览(41)
  • 玩转ROS2的填坑之路-SetuptoolsDeprecationWarning: setup.py install is deprecated

    目录 提出问题——SetuptoolsDeprecationWarning 分析问题——构建时用setup.py的方法已被弃用 解决方法——降档使用setuptools 赠品:如何查询setuptools的版本 自从使用Ubuntu22.04和ROS2后,接触到的项目都是用C++。最近为了调用pymodbus,开始尝试用python编写软件包。于是遇到了一系列的小

    2024年02月05日
    浏览(39)
  • 已解决 DEPRECATION: configobj is being installed using the legacy ‘setup.py install‘ method, because i

    已解决(pip安装fitz模块报错)DEPRECATION: configobj is being installed using the legacy ‘setup.py install’ method, because it does not have a ‘pyproject.toml’ and the ‘wheel’ package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the ‘–use-pep517’ option. Discussion can be found

    2023年04月20日
    浏览(38)
  • 已解决DEPRECATION: phrasetree is being installed using the legacy ‘setup.py install’ method, because it

    已解决DEPRECATION: phrasetree is being installed using the legacy ‘setup.py install’ method, because it does not have a ‘pyproject.toml’ and the ‘wheel’ package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the ‘–use-pep517’ option. Discussion can be found at https://github.com/pypa/pi

    2023年04月16日
    浏览(42)
  • 详细步骤 | 打包制作自己的 Python 模块包并上传到 Pip 源 PyPI

    本文介绍如何打包一个简单的 Python 项目,以及如何将其上传到Python包索引平台( PyPI ),供他人使用 pip install xxx 指令安装。 文件目录结构: 说明: packaging_tutorial 可以是任意的目录名, pyproject.toml 是打包配置文件, src 里面存放的就是你的程序代码, example_package_YOUR_USERNAM

    2024年03月24日
    浏览(37)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包