多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 服務器 > python setup

python setup

來源:程序員人生   發(fā)布時間:2016-07-23 10:27:26 閱讀次數(shù):5874次

python setup

使用Python以來,基本不可回避的就是setup.py文件,由于我們要安裝各種各樣的python軟件或其它第3方package,但是常常使用python setup.py install進行安裝,卻不甚明白該文件的工作原理。由于目前工作觸及了openstack,1個基于python的云操作系統(tǒng),因此,理解1些python的基本知識是必須要的。故找時間了解了基本的python setup.py文件的制作。

1、1個簡單的setup.py文件:

比如,我們常常使用的1個SSHpackageparamiko,其用于建立基于ssh協(xié)議的會話,下載地址為:https://github.com/paramiko/paramiko

打開其中的setup.py文件,簡單注釋,以下所示:

[python] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. import sys  
  2. from setuptools import setup            # setuptool工具  
  3.   
  4.   
  5. if sys.platform == 'darwin':  
  6.     import setup_helper  
  7.     setup_helper.install_custom_make_tarball()  
  8.   
  9.   
  10. # Version info -- read without importing  
  11. _locals = {}  
  12. with open('paramiko/_version.py') as fp:    # 獲得paramiko文件的version號,注冊到paramiko中  
  13.     exec(fp.read(), None, _locals)  
  14. version = _locals['__version__']             # 寫入到dict中  
  15.   
  16. # 介紹:https://docs.python.org/3/distutils/setupscript.html  
  17. setup(  
  18.     # meta-data數(shù)據(jù),另外還有maintainer,maintainer_email,  
  19.     # 其中name、version、url是必須的  
  20.     name = "paramiko",                          # package name  
  21.     version = version,                          # package version  
  22.     description = "SSH2 protocol library",      # 扼要描寫  
  23.     long_description = longdesc,                # 1般用于讀取readme.txt文件的內(nèi)容。。。在package發(fā)布到pypi上的時候,這項是必須的,作為package介紹  
  24.     author = "Jeff Forcier",                    # pacakge author  
  25.     author_email = "jeff@bitprophet.org",       # author's email  
  26.     url = "https://github.com/paramiko/paramiko/",  # 下載地址  
  27.     packages = [ 'paramiko' ],                  # 安裝包,這里會去檢索paramiko/__init__.py文件。。。也就是告知distutils時需要處理哪些包  
  28.     license = 'LGPL',                           # license授權  
  29.     platforms = 'Posix; MacOS X; Windows',      # 平臺  
  30.     # classifiers分類  
  31.     classifiers = [  
  32.         'Development Status :: 5 - Production/Stable',  
  33.         'Intended Audience :: Developers',  
  34.         'License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)',  
  35.         'Operating System :: OS Independent',  
  36.         'Topic :: Internet',  
  37.         'Topic :: Security :: Cryptography',  
  38.         'Programming Language :: Python',  
  39.         'Programming Language :: Python :: 2',  
  40.         'Programming Language :: Python :: 2.6',  
  41.         'Programming Language :: Python :: 2.7',  
  42.         'Programming Language :: Python :: 3',  
  43.         'Programming Language :: Python :: 3.2',  
  44.         'Programming Language :: Python :: 3.3',  
  45.         'Programming Language :: Python :: 3.4',  
  46.         'Programming Language :: Python :: 3.5',  
  47.     ],  
  48.     # 依賴包,有幾種符號  
  49.     install_requires=[  
  50.         'cryptography>=1.1',  
  51.         'pyasn1>=0.1.7',  
  52.     ],  
  53. )  


Setup腳本是利用distutils進行編譯、發(fā)包、安裝模塊的主要腳本。Setup主要的目的是將我們的發(fā)布包依照distutils描寫的方式組織,方便開發(fā)安裝。

其實,在setup.py文件中,主要包括以下內(nèi)容:

S1、列出所有的packages,使用關鍵字packagespackage_dir兩個;

S2、列出所有的依賴模塊,使用py_modules;

S3、列出擴大模塊,包括擴大名和包、源代碼文件、預處理選項如includelibrary選項,和其它的1些選項;

S4、文件發(fā)布版與依賴包的關系,使用==>=!=<

S5、直接安裝scripts文件,使用scripts關鍵字;

S6、安裝package data,使用package_data

S7、安裝1些其他文件,使用data_files

S8、額外的meta-data數(shù)據(jù),包括versionnameauthorclassifiers等,網(wǎng)址上介紹了meta-data數(shù)據(jù)的東西,這個是setup.py文件中必須的參數(shù):

 

上面的(1)表示該字段是setup文件中必須的。這個就是我們當前的setup文件的編排格式。

2、setup文件使用:

理解了setup.py文件里面的字段含義,那末我們就能夠學習setup文件的使用了,其主要有以下幾種方式:
python setup.py build #編譯
python setup.py install    #安裝,最基本的安裝方式
python setup.py sdist     #制作分發(fā)包,制作1個源碼包,格式為zip/tar.gz

python setup.py bdist_egg     #制作1個2進制分發(fā)包
python setup.py bdist_wininst #制作windows下的分發(fā)包exe程序
python setup.py bdist_rpm #制作linux下的rpm包,需要rpm程序支持

下面我們開始編寫1個setup.py文件,內(nèi)容以下:


[python] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. from distutils.core import setup  
  2. setup(  
  3.     name = 'myfirsttest',  
  4.     version = '1.0',  
  5.     py_modules = ['myfirsttest']  
  6. )  


履行python setup.py sdist后,會生成1個文件包,里面會有對應的源碼包:



到時候,客戶端拿到這個緊縮包后,解壓,并履行python setup.py install就能夠進行安裝。

3、setup.cfg文件:

Stackflow上的解釋:

http://stackoverflow.com/questions/27077355/how-to-use-setup-cfg-instead-of-setup-py-with-python⑵⑺

The problem is that the setup.cfg file does not do what you want. It does not provide parameters to the setup function. It is used to supply parameters to the commands that setup.py makes available. You can list the supported commands with setup.py --help-commands. You should see something like:

Setup.cfg其實不是setup函數(shù)中的參數(shù),而是setup.py文件中的1些參數(shù),可使用setup.py --help-commands命令查看:

 

這只是python setup.py的參數(shù),但是這其實不是直接需要寫入setup.cfg文件中的。具體的,還要再繼續(xù)查看,比如,sdist命令可以使用的參數(shù)以下:

 

可以看到,當我們需要制作源碼的時候,可使用verbosequiet等參數(shù),這就是我們需要寫入setup.cfg文件中的。

setup.cfg的文件中是依照section去處理的,比如:

比如,當我們setup.cfg中以下時:

 

當我們履行python setup.py build安裝的時候,實際履行的是以下命令:

 

參考:https://docs.python.org/2/install/index.html#distutils-configuration-files

4、distutils介紹:

setuptool通過封裝distutils,簡化了package的安裝進程。Distutils,全稱為:Python

Distribution Utilities,從python 1.6以來,distutils已成為python標準庫的1部份,極大的簡化了用戶安裝新模塊、第3方包和標準工具,并且創(chuàng)建這些distribution的方式也極大的簡化了。Distutils既為支持RPMlinux提供了創(chuàng)建RPM的方式,也提供了制作windows exe的方式。Distutils通過將setup.pysetup.cfgsource code、第3方編譯包集成在1起,做成可用的package

Distutils統(tǒng)1了linuxwindowspython的安裝方式,其實不辨別是rpm包還是tarball方式,只是履行python setup.py install便可進行安裝。并且,可以令不同的開發(fā)者向同1塊package進行工作。

1般來說,我們會順次履行buildinstall,其中build會將所有的源文件進行編譯,并放到同對應目錄下,生成build/lib文件,源文件不限于python,也能夠是C/C++。如果斟酌到build的速度,可使用--buuld-base指定build的目錄。編譯完成后,使用install安裝,安裝的進程,是將該目錄下的文件拷貝到對應的代碼目錄下。

我們默許的安裝目錄是:

 

如果是默許的話,1般是標準的python安裝目錄,linux下1般prefixexec-prefix/usr,而windows下是C:\Program Files\Python,可以采取以下方式查詢安裝目錄:

 

我們可使用以下參數(shù)去指定install的方式:

S1--userlinux下的用戶選擇,確保該用戶對安裝目錄有權限;

S2--home:指定安裝目錄:

 

可以與--install-purelib--install-scripts--install-platlib--install-data組合使用,確認各個子條目的安裝目錄。

S3--prefix

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产精品 第二页 | 婷婷在线视频国产综合 | 欧美专区日韩 | 亚洲欧美综合乱码精品成人网 | 最新欧美精品一区二区三区 | 大片免费在线观看网址 | 精品在线一区二区三区 | 欧美国产精品亚洲精品第一区 | 久久久午夜精品 | 男女激情视频软件 | 伊人久久大香网 | 国产成人毛片视频不卡在线 | 国产日韩欧美一区二区三区在线 | 亚洲国产天堂久久综合2261144 | 波多野一区二区三区在线 | 国产在线观看中文字幕 | 日本免费网站视频www区 | 日韩国产欧美在线观看 | 最近中文字幕mv免费视频 | 免费人成激情视频在线观看冫 | 久久久久久国产精品免费 | 亚洲综合视频在线 | 国产成人永久免费视 | 日韩精品中文字幕久久 | 国产农村女人一级毛片了 | 国产成人毛片精品不卡在线 | 狠狠躁天天躁 | 国产亚洲精品一区二区在线观看 | 美女毛片视频 | 成人叼嘿视频免费网站 | 高清一级毛片免免费看 | 波多洁野衣一二区三区| 欧美日本在线播放 | 久久精品免费一区二区三区 | 亚洲天堂久 | 国产噜噜噜视频在线观看 | 亚洲图片自拍偷拍 | 老牛影视在线一区二观看 | 欧美精品 日韩 | 中文字幕亚洲图片 | 亚洲欧美在线精品 |