2.5 setuptools

 官方文档地址:https://setuptools.pypa.io/en/latest/userguide/quickstart.html

  

pip install --upgrade setuptools wheel
pip install --upgrade build

项目结构

demo -- setup.py

          -- project1 -- utils/

                   -- main.py

                   -- readme.md 

                   -- requirements.txt

1、setup.py方式打包

from setuptools import setup, find_packages, find_namespace_packages
#如果每个包中都有__init__.py则可以使用find_packages
setup(
    name="project1",  #name最好和项目名保持一致,即project1
    version="0.1",
    author='wu',
    description='test',
    packages=find_namespace_packages(exclude=['venv*'],where='project1'),
    package_data={
        '': ['log/*.txt']
    },
    entry_points={
            'console_scripts': [
                'cli-name = src.utils.format:test',
            ]
        }

)

  打包

python -m build  #打包成wheel和tar.gz格式

pip install /dist/demo-0.1-py3-none-any.whl 

 安装后,即可使用cli-name命令行,以及在项目中引入包

from project1.utils.format import test

 其他打包方式

python setup.py sdist --formats=zip

python setup.py bdist

安装

python setup.py install

argument name

value

type

name

The name of the package

a string

version

The version number of the package; see distutils.version

a string

description

A single line describing the package

a string

long_description

Longer description of the package

a string

author

The name of the package author

a string

author_email

The email address of the package author

a string

maintainer

The name of the current maintainer, if different from the author. Note that if the maintainer is provided, distutils will use it as the author in PKG-INFO

a string

maintainer_email

The email address of the current maintainer, if different from the author

a string

url

A URL for the package (homepage)

a string

download_url

A URL to download the package

a string

packages

A list of Python packages that distutils will manipulate

a list of strings

py_modules

A list of Python modules that distutils will manipulate

a list of strings

scripts

A list of standalone script files to be built and installed

a list of strings

ext_modules

A list of Python extensions to be built

a list of instances of distutils.core.Extension

classifiers

A list of categories for the package

a list of strings; valid classifiers are listed on PyPI.

distclass

the Distribution class to use

a subclass of distutils.core.Distribution

script_name

The name of the setup.py script - defaults to sys.argv[0]

a string

script_args

Arguments to supply to the setup script

a list of strings

options

default options for the setup script

a dictionary

license

The license for the package

a string

keywords

Descriptive meta-data, see PEP 314

a list of strings or a comma-separated string

platforms

a list of strings or a comma-separated string

cmdclass

A mapping of command names to Command subclasses

a dictionary

data_files

A list of data files to install

a list

package_dir

A mapping of package to directory names

a dictionary

 2、pyproject.toml方式

文档地址:https://packaging.python.org/en/latest/specifications/declaring-project-metadata/

上述目录根目录中新建pyproject.toml,setup.py中注释掉setup()方法中的参数,仅保留如下内容

from setuptools import setup

setup()
#pyproject.toml
[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"

[project]
name = "project1"
authors = [
    {name = "wu", email = "wu@brown.edu"},
]
description = "My package description"
readme = "README.rst"
requires-python = ">=3.7"
keywords = ["one", "two"]
license = {text = "BSD-3-Clause"}
classifiers = [
    "Framework :: Django",
    "Programming Language :: Python :: 3",
]
dynamic = ["version"]
[project.scripts]
cli-name = "project1.utils.format:test"
#其他可用的table如下
#[project.optional-dependencies]
#[project.urls]
#[project.gui-scripts]
#[project.entry-points."spam.magical"]

 

python -m build   #打包

3、 setup.cfg打包

文档地址:https://setuptools.pypa.io/en/latest/userguide/declarative_config.html

新建setup.cfg文件

[metadata]
name = porject1
author = wu
author_email = wu@brown.edu
description = My package description
long_description = test
keywords = one, two
license = BSD-3-Clause
classifiers =
    Framework :: Django
    Programming Language :: Python :: 3

[options]
zip_safe = True
include_package_data = True
packages = find:
python_requires = >=3.7

[options.package_data]
* = *.txt, *.rst

[options.entry_points]
console_scripts =
    cli-name = project1.utils.format:test

[options.extras_require]
pdf = ReportLab>=1.2; RXP
rest = docutils>=0.3; pack ==1.1, ==1.3

[options.packages.find]
exclude =
    venv*
where=project1

 执行

python -m build

三种方式均能起到打包的作用 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值