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:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章