摘要:这篇文章描述了自己动手把需要的代码封装成python模块的方法。完成后,我们可以直接使用pip install xxx下载自己的模块并使用内置的函数。

介绍

python作为一门鼎鼎大名的语言,最有优势的地方就是它拥有无数第三方的模块可以直接拿来使用。以numpy(一个用于实现科学计算的模块)为例,常见的用法一般是这样,相信写过python的肯定是见得多了。

import numpy

from numpy import core

要使用这样外部的模块,我们通常使用pip install或者 easy_install 命令安装相关的外部文件。这个命令实际上是从python的资源管理库中下载需要的python模块。

使用python包模块有很多好处:

可以使用pip之类的命令来管理和安装python模块,避免手动管理引用文件。

方便共享我们的python包。

在一个模块中可以添加文档。

在python包与包之间有很多的相互依赖,引入包模块可以预先加载所有需要的包,避免由于模块之间依赖造成的问题。

最近在导师的一个项目里,需要从一个复杂的json格式的文件中提取大量格式化数据。为了方便重复的数据提取,我写了一个python模块,于是记录一下整个把自己写的python包发布到pip资源管理站上的过程。

注意:这个发布的过程只在python 2.7版本上经过测试,对于python 3.x 版本可能会有错误。请谨慎使用。

创建pip目录结构

要把自己的包发布到pip上,需要满足以下几个条件:

目录下的所有文件名均为英文小写

不包含下划线,空格和特殊字符

选定的包名在pypi网站上没有使用过,可以访问官网,搜索一下想用的名字有没有被占用。

我的python包名叫做clinicaltrial,目录结构如下:我们先创建空文件,指定以下的名字

clinicaltrial/

clinicaltrial/

__init__.py

setup.py

其中主目录是整个包的根目录,setup.py是部署到pip需要的配置文件,子目录clinicaltrial是真正的python代码位置。

我们在__init__.py中写入代码:

def start():

print("import successful")

然后在setup.py文件中写入以下配置信息(参数里的内容可以修改,可以添加的参数具体可以参考python官方文档)

from setuptools import setup

setup(name='clinicaltrial',

version='0.1',

description='clinical trial information retriver',

url='http://github.com/tongling/clinicaltrial',

author='Ling',

author_email='tonglingacademic@gmail.com',

license='MIT',

packages=['clinicaltrial','filter'],

zip_safe=False)

然后打开命令行,切换到当前目录,输入

pip install .

然后,在我们的系统上,就可以导入这个包了:

import clinicaltrial

clinicaltrial.start()

发布python模块

然后,我们在PyPI官网上发布我们的包。我的包在这里,可以先看一下。

首先我们登录官网,在右边菜单点击Register,注册一个账号。

然后在命令行中切换到当前目录,输入:

$ python setup.py sdist

这条命令会创建clinicaltrial-0.1.tar.gz文件,这个文件待会儿将上传到网站上。

然后输入命令,上传我们的文件:

$ python setup.py sdist upload

上传成功后,全世界所有人都可以使用pip下载你的包啦!只要输入

$ pip install clinicaltrial

就可以下载你的模块到任何python环境上。

小结

至此,用最简单的方法创建自己的python包,基本设置就完成了。但是想要让python包真正用起来,还需要增加这个包里面更多的内容。通常来说,在__init__.py编写一些初始运行脚本,增加包的使用文档和一些测试工具都是非常必要的内容。

今天就先到这里啦!后面我会介绍更多关于python之间模块依赖,.gitignore,以及编写模块测试的方法。玩的愉快!

————————————————

版权声明:本文为CSDN博主「童凌」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/tlonline/article/details/79751658

python setup.py_python setup.py 构建相关推荐

  1. python server.py_python manage.py runserver报错

    执行python manage.py runserver报错: E:\MyPythonProject\HelloWorld>python manage.py runserver Unhandle ...

  2. 你真的了解python中的setup.py吗?

    在了解setup.py之前,有必要介绍一下python库分发打包的前世今生. 一. 为什么需要对项目分发打包? 平常我们习惯了使用 pip 来安装一些第三方模块,这个安装过程之所以简单,是因为模块开发 ...

  3. 关于python中的setup.py(转)

    2019独角兽企业重金招聘Python工程师标准>>> 声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://lingxiankong.github.io/ 内容系本 ...

  4. python中setup什么意思_关于python中的setup.py解读

    前言 其实对于setup.py和setup.cfg的关注是从OpenStack的源码包中开始的,OpenStack每个组件的发布时都是一个tar.gz包,同样,我们直接从github上clone代码后 ...

  5. Python下对setup.py模块的安装方法

    Python下对setup.py模块的安装方法 setup.py文件的build和install setup.py文件的build和install 举例说明 在终端进入该模块文件的目录 接着输入 py ...

  6. 关于python中的setup.py

    关于python中的setup.py 2013-12-23 声明: 本博客欢迎转发,但请保留原作者信息! 博客地址:http://lingxiankong.github.io/ 内容系本人及本人团队学 ...

  7. 详解Python中的setup.py

    软硬件环境 ubuntu 18.04 64bit anaconda with python 3.6 setup.py 前言 科技发展到今日,软件开发已经变得越来越复杂,再也不是单单靠一个人的力量就能够 ...

  8. 纯Python包发布setup脚本编写示例

    纯Python包发布setup脚本编写示例 2014 年 6 月 23 日IT.PythonIT.python 如果你有多个模块需要发布,而它们又存在于多个包中,那么指定整个包比指定模块可能要容易地多 ...

  9. 纯Python模块发布setup脚本编写示例

    纯Python模块发布setup脚本编写示例 2014 年 6 月 22 日IT.PythonIT.python 如果你正准备发布几个模块,特别当它们并不是只在一个特定的包内,你可以在setup脚本中 ...

  10. Python Pytest前置setup和后置teardown详解

    pytest用例运行级别: ●模块级(setup_module/teardown_module)开始于模块始末,全局的 ●函数级(setup_function/teardown_function)只对 ...

最新文章

  1. android 21点游戏代码,Android 21点
  2. C二维数组行为空,列不为空
  3. binary search tree python_二叉查找树(binary search tree)——python实现
  4. 【Git】工作中99%能用到的git命令
  5. 排序算法——随机快速排序
  6. word整个表格首行缩进_Word排版对不齐?别忘了这个明星按键
  7. java实现团购功能_[Java教程]jquery组件团购倒计时功能
  8. 设计模式之“单例模式”
  9. les有学计算机的吗,赵欢喜
  10. 机器学习深度学习视频资料大汇总
  11. Unity下载安装和Android打包成APK
  12. [GUET-CTF2019]BabyRSA(p,q灵活应用)
  13. 微信小程序地图实现标记多个位置
  14. windows系统 对应GVLK码自查
  15. matlab对稀疏矩阵求特征值,使用ARPACK查找稀疏矩阵的特征向量和特征值(称为PYTHON,MATLAB或FORTRAN子例程)...
  16. Linux - samba实现Linux与windows文件共享——共享文件夹目标文件访问权限被拒绝解决方案(超详细,看不懂你怪我)
  17. golang选择和循环
  18. 大数据-计算引擎:MapReduce、TEZ、Spark【Hive可选用的三大计算引擎】
  19. 什么是Web服务器,如何配置
  20. 斜体,字体,标题,列表,a链接,描点

热门文章

  1. JQuery[12] 模仿QQ聊天界面
  2. 10.卷2(进程间通信)---Posix信号量
  3. 53. PHP 伪静态(2)
  4. 13. Element childNodes 属性
  5. CF 2A-Winner
  6. ceph rbd 封装api
  7. [.Net] 一句话Linq(递归查询)
  8. @PostConstruct 注解没有初始化
  9. 常见前端面试题及答案(下)
  10. php实现单,双向链表,环形链表解决约瑟夫问题