创建自己的python模块,并使用pip install安装到python环境

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

介绍

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

import numpy
from numpy import core

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

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

  1. 可以使用pip之类的命令来管理和安装python模块,避免手动管理引用文件。
  2. 方便共享我们的python包。
  3. 在一个模块中可以添加文档。
  4. 在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,以及编写模块测试的方法。玩的愉快!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值