共享Python模塊

PyPI

Python包索引(Python Package Index, PyPI)爲Internet上的第三方Python模塊提供了一個集中的存儲庫,我們平時pip install的Python庫都來自這個存儲庫,我們也可以將自己寫好的模塊上傳到PyPI上面開源,讓世界上所有的人都能看到你的python模塊。
  爲了測試,我寫了一個能完成經緯度轉換爲地理位置的小小demo(用的geopy庫),代碼如下:

    from geopy.geocoders import Nominatim
    """author :longlong
       purpose :practice
       the function of the module:input latitude,and then convert latitude to location """
    def print_position(lat,lng):
        geolocator = Nominatim()
        location = geolocator.reverse(str(lat)+','+str(lng),timeout=None)
        print(location.address)

print_position函數有兩個參數,分別是緯度和經度,功能是打印出所對應的地理信息。

準備發佈

爲了共享創建的這個模塊,需要準備一個發佈(distribution)的環境。python中,所謂的distribution是指一個文件集合,這些文件聯合在一起允許你構建、打包和發佈你的模塊。
  1. 新建一個文件夾,命名爲lat_to_pos
  2. 在lat_to_pos中創建一個setup.py文件,代碼是你的個人信息以及模塊信息,以上述代碼爲基準的setup.py代碼如下:

from distutils.core import setup
setup(
    name = 'lat_to_pos',
    version = '1.0.0',
    py_modules = ['lat_to_pos'],
    author = 'longlong',
    author_email = '[email protected]',
    url = 'http://www.sunlainglong.cn',
    description = 'convert latitude to location',
    )

構建發佈

1. 在lat_to_pos文件夾中打開一個終端窗口,鍵入命令:python setup.py sdist

 2. 安裝到本地的Python副本中,執行命令:`python setup.py install`
  這時,*lat_to_pos*模塊已經轉換成了一個發佈,並且安裝在本地Python副本中。構建完成時,*lat_to_pos*文件夾的結構如下:
  • lat_to_pos
    • bulid
       -  lib
         -  lat_to_pos.py
    • dist
        -  lat__to_pos-1.0.0.tar.gz 發佈包
    • MANIFEST 包含發佈中的文件列表
    • lat_to_pos.py python模塊
    • setup.py 元數據

並且,現在就可以本地導入模塊使用了,代碼如下:

  注意:`import lat_to_pos`之後 `print_position(23,112)`會報錯,原因是需要加入命名空間: `lat_to_pos.print_position(23,112)`   主Python程序中(以及IDLE shell)的代碼與一個名爲__main__的命名空間關聯,將代碼放在其單獨的模塊中時,Python會自動創建一個與模塊同名的命名空間。所以,我的模塊中的代碼會與一個名爲*lat_to_pos*的命名空間關聯。當然那,也可以通過`from lat_to_pos import print_position`來導入模塊,但是這個特定的impot語句導入的函數會覆蓋你自己定義的同名函數。 ### 向PyPI上傳代碼   1. [註冊PyPI賬號 ](https://pypi.python.org/pypi "註冊PyPI賬號 ")   2. 執行`python setup.py register`    根據個人情況選擇123來驗證身份,保存賬號密碼以備之後使用。   3. 執行`python setup.py sdist upload`   4. succeed
發佈了35 篇原創文章 · 獲贊 44 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章