前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【python】项目打包发布

【python】项目打包发布

作者头像
py3study
发布2020-01-10 16:54:17
1.5K0
发布2020-01-10 16:54:17
举报
文章被收录于专栏:python3python3

概览

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

  • distutils,setuptools,pip,virtualenv
  • 官网资料(Python Packaging User Guide):  https://packaging.python.org/key_projects/#setuptools

简介

  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的模板
    • 官方文档(详细): https://setuptools.readthedocs.io/en/latest/setuptools.html#developer-s-guide
    • 中文文档(上手): http://blog.csdn.net/pfm685757/article/details/48651389#t3
    • 模板 (只是一部分, 详见官网说明)
代码语言:javascript
复制
import ez_setup
ez.setup.use_setuptools()   # 这两行是当setuptools不存在时,自动从网上下载安装所需的setuptools包.
from setuptools import setup, find_packages
setup(
    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. 官方文档: https://virtualenv.pypa.io/en/stable/
  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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概览
  • 简介
  • 一、distutils
  • 二、setuptools:
  • 三、virtualenv
  • 四 、pip
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档