【python】项目打包发布

概览

这里主要收集python项目的打包、发布和部署的常用方法,只是入门级别,深入的流程还是以官方文档为准(链接每节都已经给出)。

简介

  1. distutils - Python自带的基本安装工具, 适用于非常简单的应用场景使用, 不支持依赖包的安装 
      通过distutils来打包,生成安装包,安装python包等工作,需要编写名为setup.py python脚本文件。

  2. setuptools - 针对 distutils 做了大量扩展, 尤其是加入了包依赖机制。不支持python3,安装完setuptools后会有easy_install

  3. distribute - 类似于setuptools,支持python3,安装完distribute后会有easy_install。

  4. easy_install - setuptools 和 distribute 自带的安装脚本, 也就是一旦setuptools或distribute安装完毕, easy_install 也便可用了。

  5. pip - 目标是取代easy_install。easy_install 有很多不足: 安装事务是非原子操作, 只支持 svn, 没有提供卸载命令, 安装一系列包时需要写脚本; pip 解决了以上问题, 已俨然成为新的事实标准, virtualenv 与它已经成为一对好搭档;

  6. distutils2 - setuptools 和 distribute 的诞生是因为 distutils 的不济, 进而导致目前分化的状况。它将成为 Python 3.3 的标准库 packaging , 并在其它版本中以distutils2 的身份出现; 换句话说, 它和 pip 将联手结束目前混乱的状况。

  7. virtualenv - 用来创建隔离的python环境,处理python环境的多版本和模块依赖。

  8. 常识 
    • sudo apt-get install 安装的package存放在 /usr/lib/python2.7/dist-packages目录中
    • pip 或者 easy_install安装的package存放在/usr/local/lib/python2.7/dist-packages目录中
    • 手动从源代码安装的package存放在site-packages目录中

一、distutils

  1. 新建文件夹(例如:distribution), 将项目文件放进去
  2. 在该文件夹下,新建setup.py文件

    • 编辑内容:

      from distutils.core import setup 
      setup( 
      name=’logIn’, #这个是最终打包的文件名 
      version=’1.0.0’, 
      py_modules=[‘logInr’], #要打包哪些,.py文件, 
      )

    • 保存退出
  3. 在命令行下,进入该文件夹,运行一下命令:

    • (1). 打包:python setup.py sdist 
      这样在文件夹中就多出了几个文件,在dist文件夹中的,logIn-1.0.0.tar.gz就是我们的发布包了;
    • (2). 安装包到本地副本中(路径为:/usr/local/lib/python2.7/dist-packages): 
      sudo python setup.py install (–record files.txt) 
      注意:为了方便卸载,可以添加括号中的选项(当前文件夹会产生files.txt), 卸载时就可以在当前文件夹下使用如下命令: 
      sudo cat files.txt | sudo xargs rm -rf

二、setuptools:

  1. setuptools 只是对distutils 的增强, 其使用过程还是一样:

    编辑: 先在项目主目录下编辑setup.py,打包: python setup.py sdist 安装: sudo python setup.py install  (--record files.txt)卸载: sudo cat files.txt | sudo  xargs rm -rf
  2. setuptools工具的setup.py的模板

    • 官方文档(详细): Building and Distributing Packages with Setuptools - setuptools 60.1.1 documentation
    • 中文文档(上手): Python包管理工具setuptools详解及entry point_pfm685757的专栏-CSDN博客_python setuptools
    • 模板 (只是一部分, 详见官网说明)

      import ez_setupez.setup.use_setuptools()   # 这两行是当setuptools不存在时,自动从网上下载安装所需的setuptools包.from setuptools import setup, find_packagessetup(    name = "HelloWorld",    version = "0.1",    packages = find_packages(),     # 常用,要熟悉 :会自动查找当前目录下的所有模块(.py文件) 和包(包含__init___.py文件的文件夹)    scripts = ['say_hello.py'],    # Project uses reStructuredText, so ensure that the docutils get    # installed or upgraded on the target machine    install_requires = ['docutils>=0.3'],       # 常用    package_data = {        # If any package contains *.txt or *.rst files, include them:        '': ['*.txt', '*.rst'],        # And include any *.msg files found in the 'hello' package, too:        'hello': ['*.msg'],    },    #     entry_points = {        'console_scripts': [            'foo = demo:test',            'bar = demo:test',        ],        'gui_scripts': [            'baz = demo:test',        ]    },    # metadata for upload to PyPI    author = "Me",    author_email = "me@example.com",    description = "This is an Example Package",    license = "PSF",    keywords = "hello world example examples",    url = "http://example.com/HelloWorld/",   # project home page, if any    # could also include long_description, download_url, classifiers, etc.)

三、virtualenv

  1. 官方文档: Virtualenv — virtualenv 20.11.1 documentation
  2. 主要命令:

        $ virtualenv ENV    $ virtualenv --system-site-packages ENV   # 继承系统原来的安装包    $ source bin/activate  # 启动虚拟环境    $ deactivate       # 退出环境    $ rm -r /path/to/ENV   # 删除环境    $ virtualenv --relocatable ENV  #  创造可以浮动的虚拟环境    $ virtualenv --extra-search-dir=/path/to/distributions ENV # 添加自定义版本的pip或setuptools        
  3. 移植:

        创建无继承的虚拟环境    virtualenv  --no-site-packages  PATH/to/projDirName    进入projDirName, 编辑项目    cd  PATH/to/projDirName    退出,至上级目录    cd  ..    virtualenv --relocatable   projDirName#  创造可以浮动的虚拟环境    将整个文件夹复制到指定的机器上, 进入PATH/to/projDirName, 启动环境,运行程序

四 、pip

  • 官方文档: User Guide - pip documentation v21.3.1
  • 这里只列出部署相关的两条命令

        pip freeze  > requirements      #  freeze 是导出当前环境安装的安装包    pip install -r requirements.txt         # 这个requirements.txt 有格式要求

 

将整个 Python 项目打包可以方便地将项目移植到其他计算机上,同时也能更好地管理项目文件。以下是一些常用的打包工具和方法: 1. 使用 PyInstaller:PyInstaller 可以将 Python 项目打包成可执行文件,支持 Windows、Linux 和 macOS 等多个平台。使用 PyInstaller 打包项目时,会将 Python 解释器和依赖库打包到一个文件中,因此可以在没有 Python 环境的计算机上运行。安装 PyInstaller 后,可以使用命令行执行以下命令进行打包: ``` pyinstaller --onefile your_script.py ``` 其中,`your_script.py` 为你的 Python 脚本文件名。执行完毕后,会在当前目录下生成一个可执行文件。 2. 使用 setuptools:setuptools 是 Python 的一个打包工具,可以将 Python 项目打包成安装包,支持 Windows、Linux 和 macOS 等多个平台。使用 setuptools 打包项目时,会将项目代码和依赖库打包到一个压缩文件中,用户在安装时需要先安装 Python 环境。安装 setuptools 后,可以编写一个 `setup.py` 文件,然后执行以下命令进行打包: ``` python setup.py sdist ``` 执行完毕后,会在当前目录下生成一个压缩文件,包含项目代码、依赖库和安装脚本等文件。 3. 使用 PyPI:PyPI 是 Python 的软件包索引,可以将 Python 项目发布到 PyPI 上,供其他用户下载和安装。使用 PyPI 打包项目时,需要编写一个 `setup.py` 文件,然后使用 `twine` 工具上传到 PyPI。具体步骤可以参考 PyPI 的官方文档。 以上是常用的 Python 打包方法,选择适合自己的方法进行打包即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arthur.AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值