我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python学习笔记-打包发布Pytho

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python学习笔记-打包发布Pytho

Python模块、扩展和应用程序可以按以下几种形式进行打包和发布:

 

python setup.py获取帮助的方式

    python setup.py --help

    python setup.py --help-commands 所有可以使用的命令,如build,install

    python setup.py COMMAND --help 获取特定命令的帮助

    python setup.py COMMAND --help-formats 获取特定命令支持使用的格式

 

打包

    1.压缩文件(使用distutils)

        Windows的Zip文件和类Unix平台的.tar.gz文件

    2.自动解包或自动安装可执行文件

        Windows中的.exe文件

    3.自包含的,不要求安装的预备运行科执行程序

        Windows的.exe文件、Unix上带有一个小的脚本前缀的ZIP压缩文件、Mac上的.app文件等

    4.平台相关的安装程序

        Windows上的.msi文件、Linux上常见的.rpm、class="lazy" data-src.rpm和.dep文件等

    5.Python eggs

        较流行的第三方扩展

 

 

发布

    “发布”是指一个文件集合,这些文件联合在一起可使用distutils构建、打包和发布模块

    创建好的发布可以用于安装,可上传到ftp,上传到各大网络让人下载,也可上传到PyPI与他人共享

 

创建发布

    将各代码文件组织到模块容器中

    准备一个README或README.txt文件

    而后在容器中创建setup.py文件

 

setup.py中setup()中可用参数:

    platforms: 平台列表

    license: 许可证

    py_modules: 各模块名称组成的列表,此些模块可能位于包的根目录下(modname),也可能位于某子包目录中(subpkg1.modname)

    packages: 各子包名称的列表

    ......

    

setup.py关键字大体分为两类:

1.元数据信息

2.包中的内容列表

 

python setup.py sdist打包(会指定默认格式tar.gz)

    可以为sdist指定打包格式:

            zip: zip file

            gztar: tar.gz file

            bztar: tar.bz2 vil2

            ztar: tar.Z file

            tar: tar file

指定格式sdist打包的方式:

[root@kurol pkg1]# python36 setup.py sdist --help-formats
List of available source distribution formats:
  --formats=bztar  bzip2'ed tar-file
  --formats=gztar  gzip'ed tar-file
  --formats=tar    uncompressed tar file
  --formats=xztar  xz'ed tar-file
  --formats=zip    ZIP file
  --formats=ztar   compressed tar file


python setup.py bdist打包(二进制发行版)(会指定默认格式tar.gz)

        可以为bdist指定的格式:

                gztar: tar.gz file

                ztar: tar.Z file

                zip: zip file

                rpm: RPM Package

                pkgtool: Solaris pkgtool

                wininst: Windows上自解压的zip格式包

                msi:Microsoft Installer

指定格式sdist打包的方式:

[root@kurol pkg1]# python36 setup.py bdist --help-formats 
List of available distribution formats:
  --formats=rpm      RPM distribution
  --formats=gztar    gzip'ed tar file
  --formats=bztar    bzip2'ed tar file
  --formats=xztar    xz'ed tar file
  --formats=ztar     compressed tar file
  --formats=tar      tar file
  --formats=wininst  Windows executable installer
  --formats=zip      ZIP file
  --formats=msi      Microsoft Installer


打包 ,例:

[root@kurol python361]# cd pkg1/
[root@kurol pkg1]# ls
__init__.py __pycache__ mymmm.py
[root@kurol pkg1]# touch REMAIN.txt
[root@kurol pkg1]# touch setup.py
[root@kurol pkg1]# vim setup.py
 #!/usr/bin/python36
 #
 from distutils.core import setup
 
 setup(
         name = 'pkg1',
         version = '1.0',
         author = 'MageEdu',
         author_email = 'email@mykurol.com',
         py_modules = ['mymmm'],
         url = 'http://www.mykurol.com',
         download_url = 'http://www.mykurol.com/pymodules/download/',
         description = 'test module',
 )
[root@kurol pkg1]# python36 setup.py sdist
running sdist
running check
warning: sdist: manifest template 'MANIFEST.in' does not exist (using default file list)

warning: sdist: standard file not found: should have one of README, README.txt

file yammm.py (for module yammm) not found
writing manifest file 'MANIFEST'
creating pkg1-1.0
making hard links in pkg1-1.0...
hard linking setup.py -> pkg1-1.0
creating dist
Creating tar archive
removing 'pkg1-1.0' (and everything under it)

[root@kurol pkg1]# ls    ##自动生成了MANIFEST文件
MANIFEST  REMAIN.txt  __init__.py  __pycache__  dist  mymmm.py  setup.py
[root@kurol pkg1]# cd dist/
[root@kurol dist]# ls
<strong>pkg1-1.0.tar.gz</strong>


使用bdist

[root@kurol dist]# cd -
/opt/python361/pkg1
[root@kurol pkg1]# python36 setup.py bdist 
running bdist
running bdist_dumb
running build
running build_py
file yammm.py (for module yammm) not found
file yammm.py (for module yammm) not found
installing to build/bdist.linux-x86_64/dumb
running install
running install_lib
warning: install_lib: 'build/lib' does not exist -- no Python modules to install

running install_egg_info
Creating build/bdist.linux-x86_64/dumb/usr/local/python361/lib/python3.6/site-packages/
Writing build/bdist.linux-x86_64/dumb/usr/local/python361/lib/python3.6/site-packages/pkg1-1.0-py3.6.egg-info
Creating tar archive
removing 'build/bdist.linux-x86_64/dumb' (and everything under it)
[root@kurol pkg1]# cd dist/
[root@kurol dist]# ls
<strong>pkg1-1.0.linux-x86_64.tar.gz</strong>  pkg1-1.0.tar.gz


指定为zip格式:

[root@kurol pkg1]# python36 setup.py bdist --formats=zip
running bdist
running bdist_dumb
running build
running build_py
file yammm.py (for module yammm) not found
file yammm.py (for module yammm) not found
installing to build/bdist.linux-x86_64/dumb
running install
running install_lib
warning: install_lib: 'build/lib' does not exist -- no Python modules to install

running install_egg_info
Creating build/bdist.linux-x86_64/dumb/usr/local/python361/lib/python3.6/site-packages/
Writing build/bdist.linux-x86_64/dumb/usr/local/python361/lib/python3.6/site-packages/pkg1-1.0-py3.6.egg-info
creating '/opt/python361/pkg1/dist/pkg1-1.0.linux-x86_64.zip' and adding '.' to it
adding 'usr/local/python361/lib/python3.6/site-packages/pkg1-1.0-py3.6.egg-info'
removing 'build/bdist.linux-x86_64/dumb' (and everything under it)
[root@kurol pkg1]# cd dist/
[root@kurol dist]# ls
pkg1-1.0.linux-x86_64.tar.gz  <strong>pkg1-1.0.linux-x86_64.zip</strong>  pkg1-1.0.tar.gz


安装包

    python setup.py install

    build and install:

    python setup.py build:

        --build-base /path/to/build_dir      ##指定build路径,build在其他路径进行,保证源码的整洁程度

            lib,lib.platform

第三方模块的大多数默认路径通常为:site-packages(站点包)

如 /usr/local/python361/lib/python3.6/site-packages

 

第三方模块自定义安装路径:

    --user 如果用户没有写权限,安装到指定用户的目录下(只有普通权限,没有办法写到公共目录中)

    --prefix 指定python库文件的安装路径(对公共目录有写权限才能操作)

    --exec-prefix 跟python无关的,有其他语言所实现的跟平台有关的,已经编译好的相关文件的安装路径(对公共目录有写权限才能操作)

 

深度定制 (期望对python模块安装做深度定制)(路径都是自己定义):

    --install-purelib /path/to/python_lib    (纯Python库文件)

    --install-platlib /paht/to/plat_lib    (扩展模块,其他语言所实现的)

       --install-lib /path/to/lib ( 也可不加区分)

        如果同时出现前面3种,第三种lib覆盖前面2种,lib优先级最高。

    --install-scripts /path/to/bin(可执行文件的安装路径)

    --install-data (指定数据文件安装路径)

    --install-headers(指定C代码的头文件安装路径)



免责声明:

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

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

Python学习笔记-打包发布Pytho

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python学习笔记-打包发布Pytho

Python模块、扩展和应用程序可以按以下几种形式进行打包和发布: python setup.py获取帮助的方式    python setup.py --help    python setup.py --help-commands 所有
2023-01-31

Python学习笔记 --- pytho

对于python操作scp不输入密码还有一个很好的解决方案:就是利用python中的 pexpect ,类似于linux下expect这个包。使用方式如下:上面的file_transfer()就是使用了免密的方式。想看源码,请访问我的Git
2023-01-31

python学习笔记(1)--pytho

Python 语言概述面向对象、解释型计算机程序设计语言。语法简洁、清晰、丰富和强大的类,能够把用其他语言(如c++/c)制作的各种模块很轻松的连接起来(胶水语言)。是纯粹的自由软件,源代码和解释器Cpython均遵循GPL(General
2023-01-31

Python学习笔记(29)-Pytho

一,简介上一篇已经介绍了python-docx模块的安装和导入,本篇直接介绍如何创建并写入word文档,需要注意的是:创建word并写入之后,操作的都是内存中的对象,最后需要保存到文件,才能看到真实的文件。二,代码演示非常简单,直接演示代码
2023-01-31

Python学习笔记整理(九)Pytho

赋值语句,表达式语句,打印一、赋值语句赋值语句给对象命名,基本形式是在等号左边写赋值语句的目标,右边写赋值的对象。左边可以是变量名或对象元素,而右侧的对象可以是任何会计算得到的对象表达式 。1、赋值语句的特性* 赋值语句建立对象引用值。建立
2023-01-31

Python学习笔记—第一章—Pytho

书目:Python(Unix和Linux系统管理指南)学习日期:20120627知识点总结:Python的优势:既简单易学,也可以完成任何复杂任务可读性好(严格的代码缩进格式)支持面向对象编程(OOP)强大的Python社区强大的Pytho
2023-01-31

Python学习笔记整理(六)Pytho

一、字典介绍字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。1、字典的主要属性*通过键而不
2023-01-31

Python学习笔记整理(七)Pytho

一、元组介绍元组(tuple)是无法修改的其他对象的结合.元组由简单的对象构成,元组与列表类似,不过元组不能在原处修改。通常写成圆括号中的一系列项。1、元组的属性*任意对象的有序集合与字符串和列表类似,元组是一个位置有序的对象集合。与列表相
2023-01-31

Python学习笔记整理(四)Pytho

字符串是一个有序的字符集合,用于存储和表现基于文本的信息。常见的字符串常量和表达式T1=‘’ 空字符串T2="diege's" 双引号T3="""...""" 三重引号块T4=r'\temp\diege' Raw字符串 抑制(取消)转义,完
2023-01-31

Python学习笔记整理(五)Pytho

列表和字段,这两种类型几乎是Python所有脚本的主要工作组件。他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套。一、列表列表的主要属性:*任意对象的有序集合从功能上看,列表就是收集其他对象的地方,可以把它看
2023-01-31

python学习笔记1——安装pytho

python学习笔记1——安装pythoncentos和ubuntu的python2.7的安装方法参考:http://daixuan.blog.51cto.com/5426657/17673251、查看当前python版本并且[root@l
2023-01-31

Python学习笔记整理(十)Pytho

if语句是选取要执行的操作.一、if语句1、通用格式形式是if测试,后面跟着一个或多个可选的elif(else if)测试,以及一个最终选用的else块。测试和else部分可以结合嵌套语句块,缩进列在行首下面。Python会执行第一个结算结
2023-01-31

Python学习笔记整理(二)pytho

一、Python的数字类型1、数字常量python数字类型在程序中如何显示(换句话说,作为常量)数字            常量1234,-23,0        一般整数99999999999L        长整型数(无限大小)1.23
2023-01-31

Python学习笔记整理(一)pytho

Python对象类型说明:python程序可以分解成模块,语句,表达式以及对象。1)、程序由模块构成2)、模块包含语句3)、语句包含表达式4)、表达式建立并处理对象一、使用内置类型除非有内置类型无法提供的特殊对象需要处理,最好总是使用内置对
2023-01-31

Python学习笔记整理(八)Pytho

程序由模块构成模块包含语句语句包含表达式表达式建立并处理对象一、Python语句语句角色列子赋值创建引用a,b,c='good','bad','ok'调用执行函数log.write('diege,test\n')print打印对象print
2023-01-31

python学习笔记(python发展介

一、python介绍python的创始人为吉多·范罗苏姆(Guido van Rossum)目前python主要应用领域:·云计算·WEB开发·科学运算、人工智能·系统运维·金融:量化交易,金融分析等,作为动态语言的python,语言结构清
2023-01-31

Redis学习笔记(二十) 发布订阅(下)

当一个客户端执行SUBSCRIBE命令订阅某个或某些频道时,这个客户端与被订阅频道之间就建立起了一种订阅关系。Redis将所有频道的订阅关系保存在服务器状态的pubsub_channels字典里面,这个字典的键是某个被订阅的频道,而键的值是一个链表,链表里面记
Redis学习笔记(二十) 发布订阅(下)
2022-03-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录