最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python的構(gòu)建工具setup.py的方法使用示例

 更新時間:2017年10月23日 11:13:21   作者:人生苦短,python當歌  
本篇文章主要介紹了python的構(gòu)建工具setup.py的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了python的構(gòu)建工具setup.py,分享個大家,具體如下:

一、構(gòu)建工具setup.py的應(yīng)用場景

在安裝python的相關(guān)模塊和庫時,我們一般使用“pip install  模塊名”或者“python setup.py install”,前者是在線安裝,會安裝該包的相關(guān)依賴包;后者是下載源碼包然后在本地安裝,不會安裝該包的相關(guān)依賴包。所以在安裝普通的python包時,利用pip工具相當簡單。但是在如下場景下,使用python setup.py install會更適合需求:

在編寫相關(guān)系統(tǒng)時,python 如何實現(xiàn)連同依賴包一起打包發(fā)布?

假如我在本機開發(fā)一個程序,需要用到python的redis、mysql模塊以及自己編寫的redis_run.py模塊。我怎么實現(xiàn)在服務(wù)器上去發(fā)布該系統(tǒng),如何實現(xiàn)依賴模塊和自己編寫的模塊redis_run.py一起打包,實現(xiàn)一鍵安裝呢?同時將自己編寫的redis_run.py模塊以exe文件格式安裝到python的全局執(zhí)行路徑C:\Python27\Scripts下呢?

在這種應(yīng)用場景下,pip工具似乎派不上了用場,只能使用python的構(gòu)建工具setup.py了,使用此構(gòu)建工具可以實現(xiàn)上述應(yīng)用場景需求,只需在 setup.py 文件中寫明依賴的庫和版本,然后到目標機器上使用python setup.py install安裝。

二、setup.py介紹

from setuptools import setup, find_packages 
 
setup( 
 name = "test", 
 version = "1.0", 
 keywords = ("test", "xxx"), 
 description = "eds sdk", 
 long_description = "eds sdk for python", 
 license = "MIT Licence", 
 
 url = "http://test.com", 
 author = "test", 
 author_email = "test@gmail.com", 
 
 packages = find_packages(), 
 include_package_data = True, 
 platforms = "any", 
 install_requires = [], 
 
 scripts = [], 
 entry_points = { 
  'console_scripts': [ 
   'test = test.help:main' 
  ] 
 } 
)

 setup.py各參數(shù)介紹:

--name 包名稱

--version (-V) 包版本

--author 程序的作者

--author_email 程序的作者的郵箱地址

--maintainer 維護者

--maintainer_email 維護者的郵箱地址

--url 程序的官網(wǎng)地址

--license 程序的授權(quán)信息

--description 程序的簡單描述

--long_description 程序的詳細描述

--platforms 程序適用的軟件平臺列表

--classifiers 程序的所屬分類列表

--keywords 程序的關(guān)鍵字列表

--packages 需要處理的包目錄(包含__init__.py的文件夾)

--py_modules 需要打包的python文件列表

--download_url 程序的下載地址

--cmdclass

--data_files 打包時需要打包的數(shù)據(jù)文件,如圖片,配置文件等

--scripts 安裝時需要執(zhí)行的腳步列表

--package_dir 告訴setuptools哪些目錄下的文件被映射到哪個源碼包。一個例子:package_dir = {'': 'lib'},表示“root package”中的模塊都在lib 目錄中。

--requires 定義依賴哪些模塊

--provides定義可以為哪些模塊提供依賴

--find_packages() 對于簡單工程來說,手動增加packages參數(shù)很容易,剛剛我們用到了這個函數(shù),它默認在和setup.py同一目錄下搜索各個含有 __init__.py的包。

其實我們可以將包統(tǒng)一放在一個src目錄中,另外,這個包內(nèi)可能還有aaa.txt文件和data數(shù)據(jù)文件夾。另外,也可以排除一些特定的包

find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])

--install_requires = ["requests"] 需要安裝的依賴包

--entry_points 動態(tài)發(fā)現(xiàn)服務(wù)和插件,下面詳細講

下列entry_points中: console_scripts 指明了命令行工具的名稱;在“redis_run = RedisRun.redis_run:main”中,等號前面指明了工具包的名稱,等號后面的內(nèi)容指明了程序的入口地址。

 entry_points={'console_scripts': [
   'redis_run = RedisRun.redis_run:main',
 ]}

這里可以有多條記錄,這樣一個項目就可以制作多個命令行工具了,比如:

setup(
 entry_points = {
  'console_scripts': [
   'foo = demo:test',
   'bar = demo:test',
  ]}
)

三、setup.py的項目示例代碼

#!/usr/bin/env python
# coding=utf-8

from setuptools import setup

'''
把redis服務(wù)打包成C:\Python27\Scripts下的exe文件
'''

setup(
 name="RedisRun", #pypi中的名稱,pip或者easy_install安裝時使用的名稱,或生成egg文件的名稱
 version="1.0",
 author="Andreas Schroeder",
 author_email="andreas@drqueue.org",
 description=("This is a service of redis subscripe"),
 license="GPLv3",
 keywords="redis subscripe",
 url="https://ssl.xxx.org/redmine/projects/RedisRun",
 packages=['RedisRun'], # 需要打包的目錄列表

 # 需要安裝的依賴
 install_requires=[
  'redis>=2.10.5',
  'setuptools>=16.0',
 ],

 # 添加這個選項,在windows下Python目錄的scripts下生成exe文件
 # 注意:模塊與函數(shù)之間是冒號:
 entry_points={'console_scripts': [
  'redis_run = RedisRun.redis_run:main',
 ]},

 # long_description=read('README.md'),
 classifiers=[ # 程序的所屬分類列表
  "Development Status :: 3 - Alpha",
  "Topic :: Utilities",
  "License :: OSI Approved :: GNU General Public License (GPL)",
 ],
 # 此項需要,否則卸載時報windows error
 zip_safe=False
)

四、修改后的項目代碼(此時RedisRun模塊是DrQueue模塊的子模塊,這是因為要導(dǎo)入某些公用的模塊)

#!/usr/bin/env python
# coding=utf-8

from setuptools import setup

'''
把redis服務(wù)打包成C:\Python27\Scripts下的exe文件
'''

setup(
 name="RedisRun", #pypi中的名稱,pip或者easy_install安裝時使用的名稱
 version="1.0",
 author="Andreas Schroeder",
 author_email="andreas@drqueue.org",
 description=("This is a service of redis subscripe"),
 license="GPLv3",
 keywords="redis subscripe",
 url="https://ssl.xxx.org/redmine/projects/RedisRun",
 packages=['DrQueue'], # 需要打包的目錄列表

 # 需要安裝的依賴
 install_requires=[
  'redis>=2.10.5',
 ],

 # 添加這個選項,在windows下Python目錄的scripts下生成exe文件
 # 注意:模塊與函數(shù)之間是冒號:
 entry_points={'console_scripts': [
  'redis_run = DrQueue.RedisRun.redis_run:main',
 ]},

 # long_description=read('README.md'),
 classifiers=[ # 程序的所屬分類列表
  "Development Status :: 3 - Alpha",
  "Topic :: Utilities",
  "License :: OSI Approved :: GNU General Public License (GPL)",
 ],
 # 此項需要,否則卸載時報windows error
 zip_safe=False
)

 此時項目的目錄結(jié)構(gòu)為:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Pyhton多線程采集圖片方式

    Pyhton多線程采集圖片方式

    這篇文章主要介紹了Pyhton多線程采集圖片方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 詳解python學習筆記之解釋器

    詳解python學習筆記之解釋器

    這篇文章主要為大家詳細介紹了python學習筆記之解釋器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python基于pandas實現(xiàn)json格式轉(zhuǎn)換成dataframe的方法

    Python基于pandas實現(xiàn)json格式轉(zhuǎn)換成dataframe的方法

    這篇文章主要介紹了Python基于pandas實現(xiàn)json格式轉(zhuǎn)換成dataframe的方法,結(jié)合實例形式分析了Python使用pandas模塊操作json數(shù)據(jù)轉(zhuǎn)換成dataframe的相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2018-06-06
  • 基于Python實現(xiàn)自動關(guān)機小工具

    基于Python實現(xiàn)自動關(guān)機小工具

    上班族經(jīng)常會遇到這樣情況,著急下班結(jié)果將關(guān)機誤點成重啟,或者臨近下班又通知開會,開完會已經(jīng)遲了還要去給電腦關(guān)機。今天使用PyQt5做了個自動關(guān)機的小工具,設(shè)置好關(guān)機時間然后直接提交即可,需要的可以參考一下
    2022-10-10
  • python實現(xiàn)彩票系統(tǒng)

    python實現(xiàn)彩票系統(tǒng)

    這篇文章主要介紹了python實現(xiàn)彩票系統(tǒng),主要采用面向?qū)ο蟮姆椒?,信息存儲方式采用pickle模塊來進行存儲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Python利用plotly繪制正二十面體詳解

    Python利用plotly繪制正二十面體詳解

    plotly的Python軟件包是一個開源的代碼庫,是一款擅長交互的Python繪圖庫。本文就來用plotly繪制正二十面體,需要的可以參考一下
    2023-02-02
  • 一篇教程教你學會Python進制轉(zhuǎn)換(十進制轉(zhuǎn)二進制、八進制、十六進制)

    一篇教程教你學會Python進制轉(zhuǎn)換(十進制轉(zhuǎn)二進制、八進制、十六進制)

    計算機中只有1和0,所以就導(dǎo)致很多時候需要進制轉(zhuǎn)換,本文介紹了Python進制轉(zhuǎn)換,十進制轉(zhuǎn)二進制,十進制轉(zhuǎn)八進制,十進制轉(zhuǎn)十六進制,有興趣的可以了解一下
    2021-05-05
  • 關(guān)于Python元祖,列表,字典,集合的比較

    關(guān)于Python元祖,列表,字典,集合的比較

    下面小編就為大家?guī)硪黄P(guān)于Python元祖,列表,字典,集合的比較。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • next在python中返回迭代器的實例方法

    next在python中返回迭代器的實例方法

    在本篇文章里小編給大家整理的是一篇關(guān)于next在python中返回迭代器的實例方法,有興趣的朋友們可以嘗試下。
    2020-12-12
  • 解決Python出現(xiàn)_warn_unsafe_extraction問題的方法

    解決Python出現(xiàn)_warn_unsafe_extraction問題的方法

    這篇文章主要為大家詳細介紹了解決Python出現(xiàn)'_warn_unsafe_extraction'問題的方法,感興趣的小伙伴們可以參考一下
    2016-03-03

最新評論

梨树县| 金门县| 教育| 新营市| 甘德县| 博白县| 资阳市| 昌宁县| 望江县| 安龙县| 且末县| 滦南县| 贵州省| 桐梓县| 许昌县| 驻马店市| 伊宁县| 富蕴县| 维西| 志丹县| 都安| 鄯善县| 南澳县| 宜春市| 藁城市| 东兴市| 郯城县| 宁都县| 宜宾县| 江西省| 滦南县| 宜城市| 金华市| 南开区| 黄浦区| 侯马市| 绥棱县| 新蔡县| 灵石县| 常山县| 通州市|