Python-打包分發


1、包管理

  為什么要使用包管理?

    Python的模塊或者源文件直接可以復制到目標項目目錄中,即可以導入使用了。但是為了更多項目調用使用,或者共享給別人使用,就需要打包,或者發布到網路,以便供人使用,目的也是為了復用。

    Pypi( Python Package Index) ,公共的模塊存儲中心 https://pypi.python.org/pypi

2、主要工具:

  distutils:

    官方庫distutils,使用安裝腳本setup.py來構建,安裝包。2000年停止開發

  setuptools:

    它是替代distutils 的增強版工具集,包含easy_install 工具,使用ez_setup.py文件,支持egg格式的構建和安裝,提供查找,下載安裝構建,發布,管理等包管理功能。

    setuptools是包管理的核心模塊。

  pip:

    目前包管理的事實標准,構建在setuptools之上,替代easy_install的,同樣提供豐富的包管理功能、

    從Python3.4 開始之間包好在安裝文件中。

  wheel:

    wheel格式定義在PEP427中

    wheel文件中不包含.pyc 文件

    提供bdist_wheel 作為seetuptools的擴展命令,這個命令可以用來生成新打包格式wheel

    pip 從1.4版本開始 提供了一個wheel子命令來安裝wheel包,當然,需要先安裝wheel模塊。

    它可以讓Python庫以二進制形式安裝,而不需要本地編譯。

3、使用setup.py打包  

 1 # from distutils.core import setup
 2 from setuptools import setup
 3 
 4 # 導入setup函數並傳參
 5 setup(name='m',
 6       version='0.1.0',
 7       description='Python test m',
 8       author='jery',
 9       author_email='jerry@mage.com',
10       # url='https://ww.python.org/sigs/distuils-sig/',
11       packages=['m', 'm.m2', 'm.m2.m21'],
12       py_modules=['tt']
13       )
14 # name 名字
15 # version 版本
16 # packages=[] 打包列表
17 # packages=['m'] ,指定m, 就會把 m 所有的 非目錄子模塊打包
18 # ['m', 'm.m1', 'm.m1.m2', 'm.m1.m2.m3']
19 # description 描述信息
20 # author 作者
21 # author_email 作者郵件
22 # url 包的主頁,可以不寫
setup.py

 

  setup.py 創建一個源代碼分發的例子,參照例子:https://docs.python.org/3.5/distutils/setupscript.html

  查看子命令:pycharm中的Treminal中:

  $ setup.py --help [ cmd1 cmd2 ...]

  $ python setup.py --help-commands

  $ setup.py cmd --help

  測試:build命令,編譯:

  $ python setup build

  

  可以看到在項目目錄下 多了一個build目錄,有一個 lib 子目錄,lib系就是模塊m 的目錄了,m目錄下的*.py 文件被復制了,但是子目錄沒有被復制。

  測試:sdist 命令,分發

  $ python setup.py sdist

  創建源代碼的分發包,產生一個dist目錄,里面生成一個帶版本號的壓縮包。

  

 

  在其他地方解壓這個文件,里面有setup.py ,就可以使用$ python setup.py install 安裝了,也可以 $ pip install m-0.1.0.zip 直接使用pip安裝這個壓縮包。

  $ python setup.py bdist_wininst # 制作windows下的分發包

  $ python setup.py bdist_rpm # 打包成rpm

  可以把自己寫好的模塊發布到公共的Pypi上,也可以搭建Pypi私服,供企業內部使用,

  Pypi 里面的模塊 沒有太好的審核機制,不保證安全,請慎重使用。

   

  wheel 包

  安裝wheel依賴:

    $ pip install wheel

  修改為:

   

  執行:

    python setup.py bdist_egg

    python setup.py bdist_wheel 

  

  將摸個模塊也加入進去:

  

 

 4、補充:

  1、可以在幫助文檔查看:

  

 

  2、在linux安裝后,在

    /home/python/.pyenv/versions/jerry366/lib/python3.6/site-packages可以查看

    安裝whl,egg,或者zip都可以!

    

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM