setuptools 工具的簡單使用

自定義 Python 庫

使用虛擬環境

使用虛擬環境可以隔離其他環境, 當然也可以不使用

使用 virtualenvwrapper 建立虛擬環境

$ mkvirtualenv Setup -p /usr/bin/python3.7
(Setup)$ pip3 list

輸出

Package    Version
---------- -------
pip        20.1
setuptools 46.1.3
wheel      0.34.2

其中 setuptools 是用於自定義 Python 第三方庫的工具

入門示例

新建文件 setup.py, 內容如下

from setuptools import setup

setup(
    name="demo",
    version="0.1",
    scripts=[]
)

過程很簡單, 僅僅調用了 setup 函數

編譯安裝該庫

(Setup)$ python3 setup.py install

查看當前庫

(Setup)$ pip3 list
Package    Version
---------- -------
demo       0.1
pip        20.1
setuptools 46.1.3
wheel      0.34.2

已經多出了一個庫 demo, 當然該庫僅僅是個擺設, 使用 import demo 會報錯

使用命名 setup.py 是一個慣例, 可以使用其他名稱

(Setup)$ mv setup.py test.py
(Setup)$ python3 test.py install

使用模塊

在同一目錄創建兩個文件 setup.py 和 demo.py

demo.py 的內容如下, 在 Demo 類中使用了 property 裝飾器來封裝 name 屬性

__version__ = "0.2"


def add(x, y):
    return x + y


class Demo:
    def __init__(self):
        self.__name = "jianghuixin"

    @property
    def name(self):
        return self.__name

    @name.setter
    def name(self, value):
        self.__name = value

改寫 setup.py

from setuptools import setup

setup(
    name="demo",
    version="0.2",
    scripts=["demo.py"]
)

在當前目錄編譯安裝

(Setup)$ python3 setup.py install

成功安裝 0.2 版的 demo 庫, 該庫可以被導入使用

(Setup)$ python3                 
Python 3.7.5 (default, Nov  7 2019, 10:50:52) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import demo
>>> demo.__version__
'0.2'
>>> demo.add(1, 2)
3
>>> d=demo.Demo()
>>> d.name
'jianghuixin'
>>> d.name="Hoss"
>>> d.name
'Hoss'

使用包

在一個目錄下建立一個包和 setup.py

.
.
├── demo
│   ├── demo.py
│   └── __init__.py
└── setup.py

demo.py 的內容

__version__ = "0.3"


def multiply(x, y):
    return x * y


class Zeros:
    def __init__(self, length):
        self.length = length

    def __len__(self):
        return int(self.length)

    def __getitem__(self, item):
        if item < self.length:
            return 0
        else:
            raise IndexError

setup.py 的內容:

from setuptools import setup

setup(
    name="demo",
    version="0.3",
    description="demo",
    author="jianghuixin",
    packages=["demo"]
)

在當前目錄編譯安裝

(Setup)$ python3 setup.py install
(Setup)$ python3
Python 3.7.5 (default, Nov  7 2019, 10:50:52) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from demo import demo
>>> demo.__version__
'0.3'
>>> demo.multiply(1, 2)
2
>>> z=demo.Zeros(3.6)
>>> len(z)
3
>>> list(z)
[0, 0, 0, 0]

查看庫信息

(Setup)$ pip3 show demo
Name: demo
Version: 0.3
Summary: demo
Home-page: UNKNOWN
Author: jianghuixin
Author-email: UNKNOWN
License: UNKNOWN
Location: /home/jianghuixin/.virtualenvs/Setup/lib/python3.7/site-packages/demo-0.3-py3.7.egg
Requires: 
Required-by:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章