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

將python包發(fā)布到PyPI和制作whl文件方式

 更新時間:2019年12月25日 10:26:37   作者:winycg  
今天小編就為大家分享一篇將python包發(fā)布到PyPI和制作whl文件方式,具有很的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

wheel文件

Wheel和Egg都是python的打包格式,目的是支持不需要編譯或制作的安裝過程,實際上也是一種壓縮文件,將.whl的后綴改為.zip即可可看到壓縮包里面的內容。按照官網說法,wheels是發(fā)行版Python的新標準并且要取代.egg。 Egg格式是由setuptools在2004年引入,而Wheel格式是由PEP427在2012年定義。 Wheel現在被認為是Python的二進制包的標準格式。

以下是Wheel和Egg的主要的不同點:

Wheel有一個官方的PEP427來定義,而Egg沒有PEP定義。

Wheel是一種分發(fā)格式,即打包格式。而Egg既是一種分發(fā)格式,也是一種 運行時安裝的格式,并且是可以被import的。

Wheel文件不會包含.pyc文件

Wheel使用和PEP376兼容的.dist-info目錄,而Egg使用.egg-info目錄。

Wheel有著更豐富的命名規(guī)則。

Wheel是有版本的,每個Wheel文件都包含wheel規(guī)格的版本和打包它的實現。

Wheel在內部被sysconfig path type管理,因此轉向其他格式也更容易。

distutils和setuptools工具

用來Python環(huán)境中構建和安裝額外的模塊,模塊可以基于Python,也可以C/C++寫的擴展模塊,可以是python包,包中包含了C和Python編寫的模塊。setuptools是 Python Enterprise Application Kit(PEAK)的一個副項目,它是一組Python的 distutilsde工具的增強版(適用于 Python 2.3.5 以上的版本,64 位平臺則適用于 Python 2.4 以上的版本),可以讓程序員更方便的創(chuàng)建和發(fā)布 Python 包,特別是那些對其它包具有依賴性的狀況。

setuptools重點在于setup.py文件編寫:

setup.py參數介紹:

name : 打包起來的包的文件名

version : 版本號,添加為打包文件的后綴名

author : 作者

author_email : 作者的郵箱

py_modules : 打包的.py文件

packages: 打包的python文件夾

include_package_data : 項目里會有一些非py文件,比如html和js等,這時候就要靠include_package_data 和 package_data 來指定了。package_data:一般寫成{‘your_package_name': [“files”]}, include_package_data還沒完,還需要修改MANIFEST.in文件.MANIFEST.in文件的語法為: include xxx/xxx/xxx/.ini/(所有以.ini結尾的文件,也可以直接指定文件名)

license : 支持的開源協(xié)議

description : 對項目簡短的一個形容

ext_modules : 是一個包含Extension實例的列表,Extension的定義也有一些參數。

ext_package : 定義extension的相對路徑

requires : 定義依賴哪些模塊

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

data_files :指定其他的一些文件(如配置文件),規(guī)定了哪些文件被安裝到哪些目錄中。如果目錄名是相對路徑,則是相對于

sys.prefix或sys.exec_prefix的路徑。如果沒有提供模板,會被添加到MANIFEST文件中。

將python文件(.py)封裝成可安裝使用的模塊

參考:https://docs.python.org/3.6/distutils/introduction.html#distutils-simple-example

printtest.py

def test():
 print('print test')

將以上.py文件做成python模塊,需要在相同目錄下創(chuàng)建setup.py文件,setup.py中輸入配置信息:

from setuptools import setup
setup(name='printtest',
  version='1.0',
  py_modules=['printtest'],
  )

打開終端,定位到該文件夾下,輸入:

python setup.py sdist

此時在目錄中生成dist文件夾,文件夾中有testpg-1.0.tar.gz文件,用戶安裝的話只需要testpg-1.0.tar.gz文件即可。將此文件解壓得到testpg-1.0文件夾,會發(fā)現該文件夾有我們剛剛書寫的3個py文件,還有一個PKG-INFO,打開該文件,會顯示該模塊的具體信息:由于我們沒有設置,所以為UNKOWN

Metadata-Version: 1.0
Name: printtest
Version: 1.0
Summary: UNKNOWN
Home-page: UNKNOWN
Author: UNKNOWN
Author-email: UNKNOWN
License: UNKNOWN
Description: UNKNOWN
Platform: UNKNOWN

終端定位到此文件夾下,輸入以下命令,模塊將會被安裝到解釋器對應的Lib/site-packages目錄下:

python setup.py install

安裝后,會發(fā)現Lib/site-packages目錄下存在printtest.py文件和printtest-1.0-py3.6.egg-info 應用:

import printtest

printtest.test()

輸出:

print test

封裝Python包

導入單個Python文件時成為Python模塊,而包含多個Python文件的文件夾成為一個Python包。本節(jié)主要講述怎樣封裝一個Python包。

1.創(chuàng)建一個文件夾,將需要封裝的pagtest文件夾(里面為.py文件,需要包括一個__init__.py文件,內容可以為空)放到該文件夾中,然后創(chuàng)建setup.py文件對包進行配置:

from setuptools import setup

setup(name='pagtest',
  version='1.0.0',
  description='A print test for PyPI',
  author='winycg',
  author_email='win@163.com',
  url='https://www.python.org/',
  license='MIT',
  keywords='ga nn',
  project_urls={
   'Documentation': 'https://packaging.python.org/tutorials/distributing-packages/',
   'Funding': 'https://donate.pypi.org',
   'Source': 'https://github.com/pypa/sampleproject/',
   'Tracker': 'https://github.com/pypa/sampleproject/issues',
  },
  packages=['pagtest'],
  install_requires=['numpy>=1.14', 'tensorflow>=1.7'],
  python_requires='>=3'
  )

2.創(chuàng)建README.txt文件用于對文件的安裝以及使用信息做描述

3.目前文件夾的目錄的架構為:

pagtest/
 __init__.py
 print1.py
 print2.py
setup.py
README.txt

輸入以下命令進行打包,制作source distribution(源代碼發(fā)布包),此命令將會把所有內容在dist/目錄打包為pagtest-1.0.0.tar.gz

python setup.py sdist

4.上傳到PyPI上。上傳時,可以建立一個賬戶驗證文件~/.pypirc(Windows不可以,因為文件命名中含有非法字符),也可以在上傳時輸入賬戶和密碼。

[distutils]
index-servers=pypi

[pypi]
repository = https://upload.pypi.org/legacy/
username = <username>
password = <password>

5.將命令行定位到此文件夾下,輸入命令對dist目錄下的pagtest-1.0.0.tar.gzt包進行上傳,twine為Python包需要安裝:

twine upload dist/*

制作python包為wheel文件

wheel是一個已經編譯好的包,在安裝時不需要編譯過程,安裝whl文件時要比發(fā)布的源文件安裝要快。

在如上第2步后,輸入如下命令即可在生成.whl

python setup.py bdist_wheel

.whl文件在dist目錄下,上傳到PyPI:

twine upload dist/*

更新Python包

修改setup.py中的版本號,然后直接上傳即可

以上這篇將python包發(fā)布到PyPI和制作whl文件方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python3 selenium 切換窗口的幾種方法小結

    python3 selenium 切換窗口的幾種方法小結

    今天小編就為大家分享一篇python3 selenium 切換窗口的幾種方法小結,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python游戲開發(fā)之精靈和精靈組

    Python游戲開發(fā)之精靈和精靈組

    python作為當前非常受歡迎的編程語言,很大一部分原因是擁有豐富的庫,這篇文章主要給大家介紹了關于Python游戲開發(fā)之精靈和精靈組的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • python知識:裝飾器@property到底有啥用途

    python知識:裝飾器@property到底有啥用途

    這篇文章主要介紹了python裝飾器@property到底有啥用途,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • python環(huán)境功能強大的pip-audit安全漏洞掃描工具

    python環(huán)境功能強大的pip-audit安全漏洞掃描工具

    這篇文章主要為大家介紹了python環(huán)境中功能強大的pip-audit安全漏洞掃描工具的功能介紹及安裝使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • Python與Node.js之間實現通信的JSON數據接收發(fā)送

    Python與Node.js之間實現通信的JSON數據接收發(fā)送

    Python和Node.js是兩個流行且功能強大的編程語言,它們之間使用JSON格式進行數據交換是一種高效和靈活的方式,本文將詳細介紹如何在Python和Node.js之間通過JSON進行數據通信,包括發(fā)送和接收JSON數據以及一些常見的交互示例代碼
    2024-01-01
  • Python流式游標與緩存式(默認)游標的那些坑及解決

    Python流式游標與緩存式(默認)游標的那些坑及解決

    這篇文章主要介紹了Python流式游標與緩存式(默認)游標的那些坑及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 基于Python_腳本CGI、特點、應用、開發(fā)環(huán)境(詳解)

    基于Python_腳本CGI、特點、應用、開發(fā)環(huán)境(詳解)

    下面小編就為大家?guī)硪黄赑ython_腳本CGI、特點、應用、開發(fā)環(huán)境(詳解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Python中的choice()方法使用詳解

    Python中的choice()方法使用詳解

    這篇文章主要介紹了Python中的choice()方法使用詳解,是Python入門中的基礎知識,需要的朋友可以參考下
    2015-05-05
  • 對python多線程與global變量詳解

    對python多線程與global變量詳解

    今天小編就為大家分享一篇對python多線程與global變量詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python實現Tracert追蹤TTL值的方法詳解

    Python實現Tracert追蹤TTL值的方法詳解

    Tracert命令跟蹤路由原理是IP路由每經過一個路由節(jié)點TTL值會減一。本文我們將通過scapy構造一個路由追蹤工具并實現一次追蹤,感興趣的小伙伴可以了解一下
    2022-10-10

最新評論