隨着深度學習的火熱,用python作爲主力開發的程序員越來越多,每個程序員基本都會寫一些自己的工具代碼,例如當分類任務時會根據文件夾生成對應的label文件,當檢測任務時會將voc_xml格式label轉成coco的json格式等等,這些工具代碼通常會被多次用到,如何將自己的工具代碼打包發佈,通過pip install numpy一樣一鍵安裝,像import numpy as np一樣如絲滑般一鍵調用呢?接下來ice_moyan會手把手教你如何打包到發佈。
step1. 註冊一個pypi賬號,至於如何註冊那就回憶一下當年的你是如何註冊QQ的基本就沒問題了。
step2. 給自己的包想好一個牛逼閃閃的包名,並且準備好自己的工具代碼。
接下來以我發佈的msctools包爲例:在msctools文件夾下建立msctools子文件夾,msctools子文件夾用來存放自己的工具代碼,如我在msctools子文件夾下存放了tools.py 和__init__.py;並且在msctools子文件夾同級目錄下新建一個setup.py文件,用來打包工具庫。
setup.py代碼內容如下:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
setup(name='MSCTOOLS',
version='0.0.0',
description='moyan private tools',
author='moyan',
author_email='[email protected]',
packages=find_packages(),
include_package_data=True,
)
''''
name/version: 是整個項目的名字,打包後會使用此名字和版本號。
description: 是一個簡短的對項目的描述,一般一句話就好,會顯示在pypi上名字下端。
long_description: 是一個長的描述,相當於對項目的一個簡潔,如果此字符串是rst格式的,PyPI會自動渲染成HTML顯示。這裏可以直接讀取README.rst中的內容。
url: 包的連接,通常爲GitHub上的鏈接或者readthedocs的鏈接。
packages: 需要包含的子包列表,setuptools提供了find_packages()幫助我們在根路徑下尋找包,這個函數distutil是沒有的。
需要處理的包目錄(包含__init__.py的文件夾)
install_requires: 申明依賴包,安裝包時pip會自動安裝:格式如下(我上面的setup.py沒有這個參數,因爲我不依賴第三方包
install_requires=[
'Twisted>=13.1.0',
'w3lib>=1.17.0',
'queuelib',
'lxml',
'pyOpenSSL',
'cssselect>=0.9',
'six>=1.5.2',
'parsel>=1.1',
'PyDispatcher>=2.0.5',
'service_identity',
]
py_modules 需要打包的python文件列表
'''
__init__.py代碼內容如下:
# !/usr/bin/env python
# -*- coding:utf-8 -*-
from .tools import *
tools.py代碼如下:(我最常用的工具代碼是sayhi)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
def sayhi():
print('hello world!!!')
文件目錄結構如下:
step3. 編譯打包自己的tool庫
3.1 在主目錄下運行 python setup.py build
3.2 在主目錄下運行 python setup.py sdist 運行成功會在主目錄下主動生成dist目錄用來存放打包好的壓縮包
3.3 在主目錄下運行 python setup.py install 該步驟爲本地安裝,本地安裝完成可以用來測試你的工具是否已經學會了sayhi
此時顯示已經本地安裝完成,可以通過本地python進行測試:
成功學會sayhi說明本地打包通過,準備進行下一步上線發佈。
step4. 上線發佈
4.1 pip install twine
4.2 在當前電腦住的主目錄下新建一個存放自己pypi的配置文件,如ubuntu: touch ~/.pypirc 內容如下
[distutils]
index-servers = pypi
[pypi]
repository:https://pypi.python.org/pypi
username:username
password:pwd
4.3 運行 twine upload dist/*
上傳成功後,在你的pypi賬號Your projects下會出現該項目,如下
4.4 幾分鐘後(上傳後有個緩衝期,不能立馬進行pip安裝),找個新環境(或者電腦),直接pip install 就可以了,以上這個流程完成.