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

Python?Setuptools的?setup.py實(shí)例詳解

 更新時(shí)間:2022年12月02日 08:56:08   作者:西京刀客  
setup.py是一個(gè)?python?文件,它的存在表明您要安裝的模塊/包可能已經(jīng)用?Setuptools?打包和分發(fā),這是分發(fā)?Python?模塊的標(biāo)準(zhǔn)。?它的目的是正確安裝軟件,本文給大家講解Python?Setuptools的?setup.py感興趣的朋友跟隨小編一起看看吧

Python 的 setup.py

背景

pip 是最主流的包管理方案,使用

pip install xxx

pip 無法正常下載Python模塊,或者需要在離線環(huán)境及無網(wǎng)絡(luò)環(huán)境安裝Python包的時(shí)候,可以采用安裝 .whl文件或者setup.py文件的方式。

一般的可以在下面的這個(gè)網(wǎng)站找到: https://pypi.org/

下載對應(yīng)的包的whl文件,然后執(zhí)行

 pip install XXX.whl

在安裝普通的python包時(shí),利用pip工具相當(dāng)簡單。采用setup.py去構(gòu)建環(huán)境,將自己寫的模塊以及相應(yīng)的依賴庫一起打包,用setup去完成這個(gè)任務(wù)。 所以很多github代碼都提供setup.py方便我們一鍵安裝。

如果您下載的軟件包在根文件夾中具有“ setup.py”,則可以通過運(yùn)行以下命令進(jìn)行安裝:

python setup.py install

如果你想安裝一個(gè)模塊但又不想安裝pip,那么唯一的選擇就是從setup.py文件安裝模塊。這可以通過python setup.py install。

什么是setup.py、setuptools

官網(wǎng):Building and Distributing Packages with Setuptools
參考URL: https://setuptools.pypa.io/en/latest/setuptools.html

setup.py是一個(gè) python 文件,它的存在表明您要安裝的模塊/包可能已經(jīng)用 Setuptools 打包和分發(fā),這是分發(fā) Python 模塊的標(biāo)準(zhǔn)。 它的目的是正確安裝軟件。

setuptools是python自帶的用來構(gòu)建包的工具,構(gòu)建出來的wheel(.whl)可供其他人pip install和import。

總之,setuptools就是比distutils好用的多,基本滿足大型項(xiàng)目的安裝和發(fā)布!

一個(gè)最基本的”setup.py”文件如下:

#coding:utf8
from setuptools import setup
setup(
   name='MyApp',        # 項(xiàng)目名
   version='1.0',       # 版本號
   packages=['myapp']   # 包括在安裝包內(nèi)的Python包
)

什么是setuptools

setuptools官方文檔:https://setuptools.readthedocs.io

distutils 是標(biāo)準(zhǔn)庫中負(fù)責(zé)建立 Python 第三方庫的安裝器,使用它能夠進(jìn)行 Python 模塊的安裝和發(fā)布。

setuptools 是 distutils 增強(qiáng)版,不包括在標(biāo)準(zhǔn)庫中。其擴(kuò)展了很多功能,能夠幫助開發(fā)者更好的創(chuàng)建和分發(fā) Python 包。大部分 Python 用戶都會(huì)使用更先進(jìn)的 setuptools 模塊。

Setuptools 提供一流的setup.py文件支持作為配置機(jī)制。setup.py 調(diào)用了 setuptools 包中的setup方法。

然而,重要的是要記住,強(qiáng)烈建議不要將此文件作為腳本(例如)運(yùn)行,并且大多數(shù)命令行界面已經(jīng)(或?qū)⒁売?(例如,…)。python setup.py sdistpython setup.py installpython setup.py bdist_wininst

** 我們還建議用戶通過pyproject.tomlsetup.cfg以更具聲明性的方式公開盡可能多的配置,并僅使用動(dòng)態(tài)部分保持最小化(如果適用,甚至完全省略)**。setup.py有關(guān)更多背景信息,請參閱為什么不應(yīng)該直接調(diào)用 setup.py 。

setup.py命令

查看所有支持的命令:

python setup.py --help-commands

構(gòu)建安裝時(shí)所需的所有內(nèi)容:

python setup.py build

安裝包到系統(tǒng)環(huán)境中。該命令會(huì)將當(dāng)前項(xiàng)目安裝到當(dāng)前Python環(huán)境的”site-packages”目錄下,這樣其他項(xiàng)目就可以像導(dǎo)入標(biāo)準(zhǔn)庫一樣導(dǎo)入該項(xiàng)目的代碼了。

python setup.py install

以開發(fā)方式安裝包:
如果項(xiàng)目在開發(fā)過程中會(huì)頻繁變更,每次安裝還需要先將原來的版本卸掉,會(huì)很麻煩。使用”develop”開發(fā)方式安裝的話,項(xiàng)目代碼不會(huì)真的被拷貝到本地Python環(huán)境的”site-packages”目錄下,而是在”site-packages”目錄里創(chuàng)建一個(gè)指向當(dāng)前項(xiàng)目位置的鏈接。這樣如果當(dāng)前位置的源碼被改動(dòng),就會(huì)馬上反映到”site-packages”里。

python setup.py develop

用于包的上傳發(fā)布:

python setup.py register

setup.py內(nèi)容 生成可執(zhí)行文件的分發(fā)(安裝到指定路徑)

參考URL: https://amir.rachum.com/blog/2017/07/28/python-entry-points/

網(wǎng)上demo:

# 用來支持自動(dòng)生成腳本,安裝后會(huì)自動(dòng)生成 /usr/bin/pmm 的可執(zhí)行文件(windows管理員權(quán)限下會(huì)在Python文件夾的script里面生成pmm.exe)
# 該文件入口指向 pimm/pimm_module.py 的main 函數(shù)
entry_points={'console_scripts': ['pmm=pimm.pimm_module:main']},
 
# 將 bin/foo.sh 和 bar.py 腳本,生成到系統(tǒng) PATH中
# 執(zhí)行 python setup.py install 后
# 會(huì)生成 如 /usr/bin/foo.sh 和 如 /usr/bin/bar.py
scripts=['bin/foo.sh', 'bar.py']

將python模塊轉(zhuǎn)變?yōu)槊钚泄ぞ?
如果我們希望 module 中的函數(shù)不僅僅只是被其他 python 程序通過 import 調(diào)用,還可以直接在命令行中執(zhí)行,那么可以做如下修改:(設(shè)置參數(shù)entry_points里的’console_scripts’)

# greeting_module.py
import pyjokes

def greeting_func(name):
    print("Hello,", name)
    print("Here is a joke for you:\n", pyjokes.get_joke())

def main():
    import sys
    arg = sys.argv[1]
    greeting_func(arg)
# setup.py 
from setuptools import setup, find_packages

setup(
	# ...,
    entry_points={       # 設(shè)置了在命令行中如何使用greeting_module中的main函數(shù)
        'console_scripts': [
            'greeting=greeting_pkg.greeting_module:main'	# <command>=<package>.<module>:<function>
        ]
    }
)

引入非Python文件

如果想引入靜態(tài)文件,如JS、CSS、圖片等,怎么做?
在項(xiàng)目根目錄下添加一個(gè)”MANIFEST.in”文件夾。假設(shè)我們把所有靜態(tài)文件都放在”static”子目錄下,

我們在清單文件”MANIFEST.in”中,列出想要在包內(nèi)引入的目錄路徑:

recursive-include myapp/static *
recursive-include myapp/xxx *

recursive-include表明包含子目錄。

在”setup.py”中將include_package_data參數(shù)設(shè)為True:

#coding:utf8
from setuptools import setup
setup(
   name='MyApp',        # 項(xiàng)目名
   version='1.0',# 版本號
   packages=['myapp'],  # 包括在安裝包內(nèi)的Python包
   include_package_data=True   # 啟用清單文件MANIFEST.in
)

如果你想排除一部分文件,可以在”setup.py”中使用exclude_package_date參數(shù):

setup(
    ...
    include_package_data=True, # 啟用清單文件MANIFEST.in
    exclude_package_date={'':['.gitignore']}
)

依賴管理

我們的項(xiàng)目會(huì)依賴其他Python模塊,如何在setup.py中管理這些依賴呢?

修改”setup.py”文件,加入install_requires參數(shù):

#coding:utf8
from setuptools import setup
setup(
   name='MyApp',        # 項(xiàng)目名
   version='1.0',# 版本號
   packages=['myapp'],  # 包括在安裝包內(nèi)的Python包
   include_package_data=True,   # 啟用清單文件MANIFEST.in
   exclude_package_date={'':['.gitignore']},
   install_requires=[   # 依賴列表
       'Flask>=0.10',
       'Flask-SQLAlchemy>=1.5,<=2.1'
   ]
)

可以通過dependency_links指定依賴包下載路徑。install_requires中的包在安裝時(shí)會(huì)先去PyPI下載并安裝,如果包在PyPI中找不到,則會(huì)從dependency_links標(biāo)識(shí)的URL中獲?。?/p>

setup(
   ...
   install_requires=[   # 依賴列表
       'Flask>=0.10',
       'Flask-SQLAlchemy>=1.5,<=2.1'
   ],

   dependency_links=[   # 依賴包下載路徑
       'http://example.com/dependency.tar.gz'
   ]
)

路徑應(yīng)指向一個(gè)”egg”包或”tar.gz”包,也可以是個(gè)包含下載地址(一個(gè)”egg”包或”tar.gz”包)的頁面。

編寫 setup.py 文件, setup.py是python模塊分發(fā)與安裝的指導(dǎo)文件。
有了setup.py文件,運(yùn)行下面這條命令,可以進(jìn)行模塊的安裝。
與 .whl文件一樣,先cmd到指定位置,然后輸入:

python setup.py install

安裝

$ pip install setuptools

到此這篇關(guān)于Python Setuptools的 setup.py的文章就介紹到這了,更多相關(guān)Python setup.py內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django框架的使用教程路由請求響應(yīng)的方法

    Django框架的使用教程路由請求響應(yīng)的方法

    這篇文章主要介紹了Django框架的使用教程路由請求響應(yīng)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • 利用Python通過獲取剪切板數(shù)據(jù)實(shí)現(xiàn)百度劃詞搜索功能

    利用Python通過獲取剪切板數(shù)據(jù)實(shí)現(xiàn)百度劃詞搜索功能

    大家是不是嫌棄每次打開百度太麻煩?今天教大家利用Python通過獲取剪切板數(shù)據(jù)實(shí)現(xiàn)百度劃詞搜索功能,用程序直接打開網(wǎng)頁,需要的朋友可以參考下
    2021-06-06
  • Python中進(jìn)行表單處理的方法詳解

    Python中進(jìn)行表單處理的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Python中進(jìn)行表單處理的方法,分別是利用Flask和Flask-WTF處理表單,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-12-12
  • Python輸入整數(shù)進(jìn)行排序方式

    Python輸入整數(shù)進(jìn)行排序方式

    這篇文章主要介紹了Python輸入整數(shù)進(jìn)行排序方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python使用matplotlib繪制等高線圖的兩種方法

    python使用matplotlib繪制等高線圖的兩種方法

    在matplotlib.pyplot 中除了可以繪制常規(guī)圖表如折線、柱狀、散點(diǎn)等,還可以繪制常用在地理上的平面展示地型的等高線圖,在本中,我們將詳細(xì)學(xué)習(xí)matplotlib 繪制等高線圖相關(guān)屬性的學(xué)習(xí),需要的朋友可以參考下
    2023-11-11
  • Python實(shí)現(xiàn)各種郵件發(fā)送

    Python實(shí)現(xiàn)各種郵件發(fā)送

    這篇文章主要介紹了Python實(shí)現(xiàn)各種郵件發(fā)送,Python內(nèi)置對SMTP的支持,可以發(fā)送純文本郵件、HTML郵件以及帶附件的郵件,下文詳細(xì)實(shí)現(xiàn)過程需要的小伙伴可以參考一下
    2022-05-05
  • Python寫捕魚達(dá)人的游戲?qū)崿F(xiàn)

    Python寫捕魚達(dá)人的游戲?qū)崿F(xiàn)

    這篇文章主要介紹了Python寫捕魚達(dá)人的游戲?qū)崿F(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • 100?個(gè)?Python?小例子(練習(xí)題四)

    100?個(gè)?Python?小例子(練習(xí)題四)

    這篇文章主要給大家分享100?個(gè)?Python?小例子,前文分享了一二三,本文的四十最后一篇了,這篇就把100道python小練習(xí)全分享完了,感興趣的小伙伴也可以去練習(xí)前幾期內(nèi)容,洗碗給這幾篇文章給你的學(xué)習(xí)帶來幫助
    2022-01-01
  • python 實(shí)現(xiàn)aes256加密

    python 實(shí)現(xiàn)aes256加密

    這篇文章主要介紹了python 如何實(shí)現(xiàn)aes256加密,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • Python可視化神器pyecharts繪制柱狀圖

    Python可視化神器pyecharts繪制柱狀圖

    這篇文章主要介紹了Python可視化神器pyecharts繪制柱狀圖,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-07-07

最新評論

丰顺县| 响水县| 堆龙德庆县| 长乐市| 昌黎县| 阿克苏市| 图片| 堆龙德庆县| 晋城| 昂仁县| 徐州市| 胶州市| 华坪县| 浦东新区| 嵊州市| 云龙县| 麟游县| 大同市| 梁山县| 聂拉木县| 新龙县| 沙洋县| 旅游| 金平| 贵阳市| 广水市| 光山县| 枣庄市| 保康县| 寻甸| 威海市| 平乡县| 九寨沟县| 清丰县| 河北区| 化州市| 通河县| 土默特左旗| 密云县| 宁河县| 延寿县|