python的第三方模块越来越丰富,涉及的领域也非常广,如科学计算、图片处理、web应用、GUI开发等。当然也可以将自己写的模块进行打包或发布。一简单的方法是将你的类包直接copy到python的lib目录,但此方式不便于管理与维护,存在多个python版本时会非常混乱。现介绍如何编写setup.py来对一个简单的python模块进行打包。

一、编写模块

进入项目目录

#cd /home/pysetup

#vi foo.py

view plain print ?

class MyClass():

def __init__(self):

self.blog = "http://blog.liuts.com"

def printblog(self):

print self.blog

def printBblog(self):

print self.blog.swapcase()

二、编写setup.py

#vi setup.py

view plain print ?

from distutils.core import setup

setup(name='Myblog',

version='1.0',

description='My Blog Distribution Utilities',

author='Liu tiansi',

author_email='liutiansi@gmail.com',

url='http://blog.liuts.com',

py_modules=['foo'],

)

更多参数说明见表:

三、setup.py参数说明

引用

#python setup.py build # 编译

#python setup.py install #安装

#python setup.py sdist #生成压缩包(zip/tar.gz)

#python setup.py bdist_wininst #生成NT平台安装包(.exe)

#python setup.py bdist_rpm #生成rpm包

或者直接"bdist 包格式",格式如下:

引用

#python setup.py bdist --help-formats

--formats=rpm RPM distribution

--formats=gztar gzip'ed tar file

--formats=bztar bzip2'ed tar file

--formats=ztar compressed tar file

--formats=tar tar file

--formats=wininst Windows executable installer

--formats=zip ZIP file

四、打包

#python setup.py sdist

引用

running sdist

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

writing manifest file 'MANIFEST'

creating Myblog-1.0

making hard links in Myblog-1.0...

hard linking foo.py -> Myblog-1.0

hard linking setup.py -> Myblog-1.0

creating dist

tar -cf dist/Myblog-1.0.tar Myblog-1.0

gzip -f9 dist/Myblog-1.0.tar

removing 'Myblog-1.0' (and everything under it)

提示两条warning可以忽略,不影响打包,当然一个完善的项目必须有README及MANIFEST.in(项目文件清单)文件。

#ls dist

Myblog-1.0.tar.gz

五、安装

#tar -zxvf Myblog-1.0.tar.gz

#cd Myblog-1.0.tar.gz

#python setup.py install (此命令大家再熟悉不过了)

引用

running install

running build

running build_py

creating build/lib.linux-x86_64-2.6

copying foo.py -> build/lib.linux-x86_64-2.6

running install_lib

copying build/lib.linux-x86_64-2.6/foo.py -> /usr/local/lib/python2.6/dist-packages

byte-compiling /usr/local/lib/python2.6/dist-packages/foo.py to foo.pyc

running install_egg_info

Writing /usr/local/lib/python2.6/dist-packages/Myblog-1.0.egg-info

六、测试

引用

>>> from foo import MyClass

>>> app=MyClass()

>>> app.print printblog()

>>> app.printblog()

http://blog.liuts.com

>>> app.printBblog()

HTTP://BLOG.LIUTS.COM

>>>

如何使用和制作 Python 安装模块(setup.py)

分类: Python 2011-07-08 14:16 10829人阅读 评论(0) 收藏 举报

python import module windows build java

Python模块的安装方法:

1. 单文件模块:直接把文件拷贝到$python_dir/lib

2. 多文件模块,带setup.py:python setup.py install

3. egg文件,类似Java的jar:

1) 下载ez_setup.py,运行python ez_setup

2) easy_install *.egg

虽然Python的模块可以拷贝安装,但是一般情况下推荐制作一个安装包,即写一个setup.py文件来安装。

setup.py文件的使用:

% python setup.py build #编译

% python setup.py install #安装

% python setup.py sdist #制作分发包

% python setup.py bdist_wininst #制作windows下的分发包

% python setup.py bdist_rpm

setup.py文件的编写:

setup.py中主要执行一个 setup函数,该函数中大部分是描述性东西,最主要的是packages参数,列出所有的package,可以用自带的find_packages来动态获取package。所以setup.py文件的编写实际是很简单的。

简单的例子:

setup.py文件:

from setuptools import setup, find_packages

setup(

name="mytest",

version="0.10",

description="My test module",

author="Robin Hood",

url="http://www.csdn.net",

license="LGPL",

packages= find_packages(),

scripts=["scripts/test.py"],

)

mytest.py文件:

import sys

def get():

return sys.path

scripts/test.py文件:

import os

print os.environ.keys()

setup中的scripts表示将该文件放到 Python的Scripts目录下,可以直接用。OK,简单的安装成功,可以运行所列举的命令生成安装包,或者安装该python包。

python模块安装包_制作python模块安装包[转载自刘天斯]相关推荐

  1. python中的ssl模块不能用_解决Python找不到ssl模块问题 No module named _ssl的方法

    python安装完毕后,提示找不到ssl模块: [www@pythontab.com ~]$ python Python 2.7.15 (default, Oct 23 2018, 18:08:43) ...

  2. 在python中模块可以封装_python 制作python包,封装成可用模块教程

    首先编写py程序: printtest.py def test(): print('print test') 将以上.py文件做成python模块,需要在相同目录下创建setup.py文件,setup ...

  3. python安装包_迈出Python学习第一步:Python开发环境的下载与安装

    所谓"磨刀不误砍柴工"."工欲善其事,必先利其器",都在告诉我们一个道理:要做好一个事情,事先做好充分的准备工作是非常重要的.所以在我们正式学习用Python编 ...

  4. python之sys模块详解_(转)python之os,sys模块详解

    python之sys模块详解 原文:http://www.cnblogs.com/cherishry/p/5725184.html sys模块功能多,我们这里介绍一些比较实用的功能,相信你会喜欢的,和 ...

  5. 导入python标准数学函数模块的语句_《Python编程快速上手——让繁琐工作自动化》——2.8 导入模块...

    本节书摘来自异步社区<Python编程快速上手--让繁琐工作自动化>一书中的第2章,第2.8节,作者[美] Al Sweigart,王海鹏 译,更多章节内容可以访问云栖社区"异步 ...

  6. python psutil库安装_安装psutil模块报错安装python-devel

    psutil/_psutil_linux.c:9:20: 错误:Python.h:没有那个文件或目录 In file included from psutil/_psutil_linux.c:19: ...

  7. python os模块安装方法_基于python中pygame模块的Linux下安装过程(详解)

    一.使用pip安装Python包 大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip.在Python3中,pip有时被称为pip3. 1.在Linux和OS X系统中检查 ...

  8. python简单图形输出_基于 Python Matplotlib 模块的高质量图形输出

    Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模块.它利用了 Python 下的数值计算模块 Numeric 及 Numarray,克隆了许多 M ...

  9. python模块导入教学_【python基础课|今日教学内容:Python导入模块的方式,学python的必备技能】- 环球网校...

    [摘要]在这个科学技术高速发展的时代,越来越多的人都开始选择学习编程软件,那么首先被大家选择的编程软件就是python,也用在各行各业之中,并被大家所熟知,所以也有越来越多的python学习者关注py ...

最新文章

  1. Petshop3.0学习笔记(二)Global.asax文档分析
  2. 【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
  3. 算法之图搜索算法(一)
  4. 075-SSH遇到不能登陆的情况
  5. 请查收 | 2021 阿里妈妈技术文章回顾
  6. Linux常用指令---netstat(网络端口)
  7. Hibernate学习笔记--第二篇 关联关系映射 many –to –one
  8. Mac上显示出.m2文件夹并将IDEA中的Maven修改为阿里云镜像
  9. React Native开发总结(一)
  10. 免费素材下载:200个超棒的矢量图标下载
  11. laravel路由不生效,404,除了/ 都不行,关于nginx环境下laravel除了默认路由都出现404报错的处理方法...
  12. bootstrapmodel确认操作框_光伏电站EL检测仪的操作流程
  13. 2017-2018-1 20155322 20155327 实验一 开发环境的熟悉
  14. 阿里云云安全中心入选 Gartner CWPP 全球市场指南 | 凌云时刻
  15. python——字典攻击
  16. w10系统服务器连接错误代码,Win10升级失败常见问题及错误代码解决方法汇总
  17. Python请求HTTPS证书错误
  18. 一文搞懂MD5、SHA-1、SHA-2、SHA-3,哪个算法比较安全
  19. 2022广东深圳国际半导体分立器件产品与应用技术展览会
  20. 摄氏温度转换成对应的华氏温度

热门文章

  1. Object.entries() Object.values()
  2. 64位操作系统注册ocx控件失败,提示:模块加载失败请确保该二进制存储在指定路径中。
  3. 非线性优化汇总——Matlab优化工具箱(持续更新中)
  4. 六安构建智慧城市节水管理平台
  5. 华为云照片的爬虫程序更新(python3.6)
  6. 岛屿最大面积 leetcode Java_【Leetcode刷题】岛屿的最大面积
  7. 《工程伦理与学术道德》期末考试
  8. 爬虫大作业~以爬取hao123漫画为例
  9. html显示隐藏图片,简单的图片显示与隐藏
  10. Python基础学习笔记【廖雪峰】