欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

在這種應(yīng)用場(chǎng)景下,pip工具似乎派不上了用場(chǎng),只能使用python的構(gòu)建工具setup.py了,使用此構(gòu)建工具可以實(shí)現(xiàn)上述應(yīng)用場(chǎng)景需求,只需在 setup.py 文件中寫(xiě)明依賴(lài)的庫(kù)和版本,然后到目標(biāo)機(jī)器上使用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 包名稱(chēng)

--version (-V) 包版本

--author 程序的作者

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

--maintainer 維護(hù)者

--maintainer_email 維護(hù)者的郵箱地址

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

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

--description 程序的簡(jiǎn)單描述

--long_description 程序的詳細(xì)描述

--platforms 程序適用的軟件平臺(tái)列表

--classifiers 程序的所屬分類(lèi)列表

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

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

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

--download_url 程序的下載地址

--cmdclass

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

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

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

--requires 定義依賴(lài)哪些模塊

--provides定義可以為哪些模塊提供依賴(lài)

--find_packages() 對(duì)于簡(jiǎn)單工程來(lái)說(shuō),手動(dòng)增加packages參數(shù)很容易,剛剛我們用到了這個(gè)函數(shù),它默認(rèn)在和setup.py同一目錄下搜索各個(gè)含有 __init__.py的包。

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

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

--install_requires = ["requests"] 需要安裝的依賴(lài)包

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

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

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

這里可以有多條記錄,這樣一個(gè)項(xiàng)目就可以制作多個(gè)命令行工具了,比如:

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

三、setup.py的項(xiàng)目示例代碼

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

from setuptools import setup

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

setup(
 name="RedisRun", #pypi中的名稱(chēng),pip或者easy_install安裝時(shí)使用的名稱(chēng),或生成egg文件的名稱(chēng)
 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'], # 需要打包的目錄列表

 # 需要安裝的依賴(lài)
 install_requires=[
  'redis>=2.10.5',
  'setuptools>=16.0',
 ],

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

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

四、修改后的項(xiàng)目代碼(此時(shí)RedisRun模塊是DrQueue模塊的子模塊,這是因?yàn)橐獙?dǎo)入某些公用的模塊)

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

from setuptools import setup

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

setup(
 name="RedisRun", #pypi中的名稱(chēng),pip或者easy_install安裝時(shí)使用的名稱(chēng)
 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'], # 需要打包的目錄列表

 # 需要安裝的依賴(lài)
 install_requires=[
  'redis>=2.10.5',
 ],

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

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

 此時(shí)項(xiàng)目的目錄結(jié)構(gòu)為:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)簡(jiǎn)單的ui界面的設(shè)計(jì)步驟(適合小白)

    Python實(shí)現(xiàn)簡(jiǎn)單的ui界面的設(shè)計(jì)步驟(適合小白)

    當(dāng)我們書(shū)寫(xiě)一個(gè)python程序時(shí),我們?cè)诳刂婆_(tái)輸入信息時(shí),往往多有不便,并且為了更加美觀且直觀的方式輸入控制命令,我們常常設(shè)計(jì)一個(gè)ui界面,這樣就能方便執(zhí)行相關(guān)功能,如計(jì)算器、日歷等界面,本博客是為了給ui設(shè)計(jì)的小白進(jìn)行講解,需要的朋友可以參考下
    2024-07-07
  • python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5滾動(dòng)條控件QScrollBar詳細(xì)使用方法與實(shí)例

    python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5滾動(dòng)條控件QScrollBar詳細(xì)使用方法與實(shí)例

    這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5滾動(dòng)條控件QScrollBar詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下
    2020-03-03
  • 利用Python還原方陣游戲詳解

    利用Python還原方陣游戲詳解

    這篇文章的靈感來(lái)源于我玩游戲的時(shí)候,看見(jiàn)一個(gè)大佬在游戲里面建造了“還原方陣游戲”,就感覺(jué)很牛掰,就想著python不是有矩陣嗎,可以還原一下呢,感興趣的小伙伴可以了解一下
    2023-01-01
  • python?Pandas之DataFrame索引及選取數(shù)據(jù)

    python?Pandas之DataFrame索引及選取數(shù)據(jù)

    這篇文章主要介紹了python?Pandas之DataFrame索引及選取數(shù)據(jù),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07
  • Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索

    Django利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索

    這篇文章主要介紹了Django如何利用AJAX技術(shù)實(shí)現(xiàn)博文實(shí)時(shí)搜索,幫助大家更好的理解和學(xué)習(xí)使用Django框架,感興趣的朋友可以了解下
    2021-05-05
  • 詳解Python發(fā)送email的三種方式

    詳解Python發(fā)送email的三種方式

    這篇文章主要介紹了詳解Python發(fā)送email的三種方式,Python發(fā)送email的三種方式,分別為使用登錄郵件服務(wù)器、使用smtp服務(wù)、調(diào)用sendmail命令來(lái)發(fā)送三種方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-10-10
  • python--shutil移動(dòng)文件到另一個(gè)路徑的操作

    python--shutil移動(dòng)文件到另一個(gè)路徑的操作

    這篇文章主要介紹了python--shutil移動(dòng)文件到另一個(gè)路徑的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • 給ubuntu18安裝python3.7的詳細(xì)教程

    給ubuntu18安裝python3.7的詳細(xì)教程

    這篇文章主要介紹了給ubuntu18安裝python3.7的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 利用python繪制立體玫瑰花代碼示例

    利用python繪制立體玫瑰花代碼示例

    這篇文章主要給大家介紹了關(guān)于如何利用python繪制立體玫瑰花的相關(guān)資料,利用python繪制一朵玫瑰,快拿去送給你心愛(ài)的人吧!需要的朋友可以參考下
    2023-09-09
  • 解決tensorflow打印tensor有省略號(hào)的問(wèn)題

    解決tensorflow打印tensor有省略號(hào)的問(wèn)題

    今天小編就為大家分享一篇解決tensorflow打印tensor有省略號(hào)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02

最新評(píng)論