日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

纯Python包发布setup脚本编写示例

發布時間:2025/3/15 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 纯Python包发布setup脚本编写示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

純Python包發布setup腳本編寫示例

2014 年 6 月 23 日IT、PythonIT、python

如果你有多個模塊需要發布,而它們又存在于多個包中,那么指定整個包比指定模塊可能要容易地多。即使你的模塊并不在一個包內,這種做法也行的通;你可以告訴Distutils從根包(root package)處理模塊,并且它工作起來和其他任意的包一樣(除非你不需要擁有一個__init__.py文件)。

例1.1 根包發布

文件結構為:

<root>/setup.pyfoo.pybar.py

setup腳本可以這樣寫:

from distutils.core import setupsetup(name='foobar',version='1.0',packages=[''],)

(空字符串表示根包)

例1.2 根包發布(模塊在子目錄)

如果你把上例中兩個模塊文件移入到一個子目錄,但是它們仍在根包中,如:

<root>/setup.pysrc/foo.pybar.py

那么將仍然指定根包,但是你必須告訴Distutils那些源文件在哪里:

from distutils.core import setupsetup(name='foobar',version='1.0',package_dir={'': 'src'},packages=[''],)

例2.1 包發布

如果你想發布在同一包中(或者在子包中)的多個模塊。比如,如果foobar 模塊屬于包foobar,文件結構如下:

<root>/setup.pyfoobar/__init__.pyfoo.pybar.py

實際上這是Distutils默認的層次,一個精簡的setup腳本可以這樣寫:

from distutils.core import setupsetup(name='foobar',version='1.0',packages=['foobar'],)

例2.2 包發布(模塊所在目錄名不是包名)

如果你想將模塊放入不是包名的目錄,那么你還需要用到package_dir參數。例如,如果在foobar 包中src 目錄擁有多個模塊:

<root>/setup.pysrc/__init__.pyfoo.pybar.py

合適的setup腳本將會是:

from distutils.core import setupsetup(name='foobar',version='1.0',package_dir={'foobar': 'src'},packages=['foobar'],)

例2.3 包發布(包存在于根目錄)

或者你想把包放在發布根目錄,如:

<root>/setup.py__init__.pyfoo.pybar.py

這種情況下你的setu腳本將會是:

from distutils.core import setupsetup(name='foobar',version='1.0',package_dir={'foobar': ''},packages=['foobar'],)

(空字符串同樣也代表當前目錄)

例2.4 包發布(多子包)

如果你有多個子包,它們必須被顯在地列舉在packages參數中,但是其他任何在package_dir參數中的實體自動擴展到子包。(換句話說,Distutils并不瀏覽你的源文件樹(source tree),而是通過尋找__init__.py文件來計算相應Python包的目錄。)因此,如果默認的層次有一個子包:

<root>/setup.pyfoobar/__init__.pyfoo.pybar.pysubfoo/__init__.pyblah.py

那么相應的setup腳本將會是:

from distutils.core import setupsetup(name='foobar',version='1.0',packages=['foobar', 'foobar.subfoo'],)

注意:發布一個包,就是將該包所在目錄所有模塊全部發布。那么我們就不能只發布包內部分模塊。

例如,文件結構如下:

<root>/setup.pysub_package1/__init__.pysub_model1sub_model2sub_package2/__init__.pysub_model3

使用Distutils,我們無法在發布包sub_packe1和sub_package2的同時,不發布sub_model2模塊。

本例來源stackoverflow:How to distributing a Python package(just distributing some model in sub package)


  • 參考資料:Pure Python distribution (by package)
  • 延伸閱讀:Distributing Python Modules

總結

以上是生活随笔為你收集整理的纯Python包发布setup脚本编写示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。