python使用setuptools打包egg

2021-08-21 09:57:54 字數 2908 閱讀 3368

作為python標準的打包及分發工具,setuptools可以說相當得簡單易用。相面記錄一下python如何利用setuptools進行分發打包。

方式一:通過python安裝

方式二:yum 安裝

yum install python-setuptools
建立乙個setup-demo目錄

mkdir setup-demo
cd setup-demo
vi say_hello_word.py
內容為:

say():

print('hello word !')

在setup-demo目錄下建立乙個setup.py的檔案

vi setup.py
內容為:

from setuptools import setup

setup(

version="1.0",

)

version為版本號

packages為要打包的包名,可以通過陣列的形式指定,也可以通過from setuptools import find_packages 這個方法,讀取setup.py所在目錄的所有包

packages=find_packages()
最後整個目錄結構如下所示:

[root@localhost setup-demo]# find ./

././setup.py

打包成egg檔案

python setup.py bdist_egg
打包後的目錄結構如下圖所示:

[root@localhost setup-demo]# find ./

././setup.py

./build

./build/lib

./build/bdist.linux-x86_64

./dist

.egg

生成的egg檔案會儲存在dist目錄下面。

安裝egg檔案,其實就是通過命令將打包的應用安裝到python環境的「site-packages」目錄下,這樣其他程式就可以向匯入標準庫一樣匯入該應用的**了。

安裝

python setup.py install

或者.egg

測試python 2.7

.5 (default, nov 6

2016, 00:28:07)

[gcc 4.8

.520150623 (red hat 4.8

.5-11)] on

linux2

or"license"

for more information.

>>> say()

hello word !

上例子中只將包下的python檔案打包,如果要打包一些非.py的檔案,需要在setup.py的同級新增乙個manifest.in的配置檔案,來告訴setuptools我們打包的東西包括哪些內容。

目錄結構如下所示:

././setup.py

./manifest.in

words.txt

words

to deal with

handle_word.py

import os

defprint_words

(): f_p = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'word/words.txt')

print(f_p)

with open(f_p) as f :

print(f.read())

manifest.in

清單檔案,用來列出想要引入的目錄路徑

「recursive-include」表明包含子目錄。別急,還有一件事要做,就是在」setup.py」中將」 include_package_data」引數設為true:

from setuptools import setup

setup(

version="1.0",

include_package_data=true

)

如果不想包含某些目錄,可以新增以下配置

setup(

...include_package_data=true, # 啟用清單檔案manifest.in

exclude_package_date=

)

打包

python setup.py install
測試

python 2.7

.5 (default, nov 6

2016, 00:28:07)

[gcc 4.8

.520150623 (red hat 4.8

.5-11)] on

linux2

or"license"

for more information.

>>> pw()

here are some

words

to deal with

python 安裝pip以及setuptools

安裝pip前必須先安裝setuptools,不然會報錯 from setuptools import setup,find packages importerror no module named setuptools 然後將它們解壓到python目錄下,然後進入它們的目錄 python必須先設定好...

python元類的使用 python使用元類

原文 type 動態語言和靜態語言最大的不同,就是函式和類的定義,不是編譯時定義的,而是執行時動態建立的。比方說我們要定義乙個hello的class,就寫乙個hello.py模組 當python直譯器載入hello模組時,就會依次執行該模組的所有語句,執行結果就是動態建立出乙個hello的class...

Python精通 Python函式使用

在程式設計意義上的函式其實是指完成某種操作的 塊,當然這個是個人的理解,但是這個概念在所有的程式語言中都是通用的。這個 塊用來完成某寫特定的操作。但是在數學上的函式卻是表示某種對應關係,這兩者之間還是有一定的區別的。但是在某種角度上講我們所程式設計的這種 塊其實就是表示的是引數與返回值之間的關係。從...