摘要:這篇文章描述了自己動手把需要的代碼封裝成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