百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

python散装笔记——85: setup.py_python setup.cfg

itomcoil 2025-02-20 15:55 21 浏览

Parameter

Usage

name

您的发行版名称。

version

发行版的版本字符串。

packages

要包含的 Python 包(即包含模块的目录)列表。可以手动指定,但通常会调用 setuptools.find_packages() 来代替。

py_modules

要包含的顶级 Python 模块(即单个 .py 文件)列表。

1: setup.py 的目的

设置脚本是使用 Distutils 构建、分发和安装模块的所有活动的中心。其目的是正确安装软件。

如果你只想分发一个名为 foo 的模块,该模块包含在 foo.py 文件中,那么你的设置脚本可以像下面这样简单:

from distutils.core import setup
setup(name='foo',
      version='1.0',
      py_modules=['foo'],
     )

要创建该模块的源代码发布版,需要创建一个包含上述代码的设置脚本 setup.py,并在终端运行此命令:

python setup.py sdist

sdist 将创建一个包含设置脚本 setup.py 和模块 foo.py 的归档文件(如 Unix 上的 tarball,Windows 上的 ZIP 文件)。归档文件将命名为 foo-1.0.tar.gz(或 .zip),并将解压缩到 foo-1.0 目录中。

如果最终用户希望安装 foo 模块,她只需下载 foo-1.0.tar.gz(或 .zip),解压缩,然后从foo-1.0 目录运行

python setup.py install

2: 在 setup.py 中使用源码控制元数据

setuptools_scm 是一个被官方认可的软件包,它可以使用 Git 或 Mercurial 元数据来确定软件包的版本号,并找到要包含在其中的 Python 软件包和软件包数据。

from setuptools import setup, find_packages

setup(
  setup_requires=['setuptools_scm'],
  use_scm_version=True,
  packages=find_packages(),
  include_package_data=True,
)

本例同时使用了这两种功能;如果只想使用 SCM 元数据来获取版本,请将对 find_packages() 的调用替换为手动软件包列表;如果只想使用软件包查找器,请移除 use_scm_version=True

3: 在 python 软件包中添加命令行脚本

python 软件包中的命令行脚本很常见。你可以这样组织你的软件包,当用户安装软件包时,脚本就会出现在他们的路径上。

例如,在 greetings 包中有一个命令行脚本 hello_world.py

greetings/
  greetings/
    __init__.py
    hello_world.py

您可以运行以下命令来运行该脚本

python greetings/greetings/hello_world.py

不过,如果您想这样运行的话:

hello_world.py

为此,您可以在 setup.py 中的 setup() 中添加脚本,如下所示:

from setuptools import setup

setup(
  name='greetings',
  scripts=['hello_world.py']
)

当你现在安装问候语软件包时,hello_world.py 将被添加到你的路径中。

另一种方法是添加一个入口点:

entry_points={'console_scripts': ['greetings=greetings.hello_world:main']}

这样,您只需像这样运行即可:

greetings

4: 添加安装选项

从前面的例子中可以看出,该脚本的基本用法是

python3 setup.py install

但还有更多选择,比如安装软件包后,无需重新安装即可修改代码并进行测试。这可以使用

python3 setup.py develop

如果要执行特定操作,如编译 Sphinx 文档或构建 fortran 代码,可以创建自己的选项:

cmdclasses = dict()

class BuildSphinx(Command):
  """Build Sphinx documentation."""
  description = 'Build Sphinx documentation'
  user_options = []

  def initialize_options(self):
    pass

  def finalize_options(self):
    pass

  def run(self):
    import sphinx
    sphinx.build_main(['setup.py', '-b', 'html', './doc', './doc/_build/html'])
    sphinx.build_main(['setup.py', '-b', 'man', './doc', './doc/_build/man'])

cmdclasses['build_sphinx'] = BuildSphinx

setup(
...
cmdclass=cmdclasses,
)

initialize_optionsfinalize_options 将在运行函数之前和之后执行,正如它们的名字所暗示的那样。

之后,你就可以调用你的选项了:

python setup.py build_sphinx

相关推荐

MySQL修改密码_mysql怎么改密码忘了怎么办

拥有原来的用户名账户的密码mysqladmin-uroot-ppassword"test123"Enterpassword:【输入原来的密码】忘记原来root密码第一...

数据库密码配置项都不加密?心也太大了吧!

先看一份典型的配置文件...省略...##配置MySQL数据库连接spring.datasource.driver-class-name=com.mysql.jdbc.Driverspr...

Linux基础知识_linux基础入门知识

系统目录结构/bin:命令和应用程序。/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev:dev是Device(设备)的缩写,该目录...

MySQL密码重置_mysql密码重置教程

之前由于修改MySQL加密模式为mysql_native_password时操作失误,导致无法登陆MySQL数据库,后来摸索了一下,对MySQL数据库密码进行重置后顺利解决,步骤如下:1.先停止MyS...

Mysql8忘记密码/重置密码_mysql密码忘了怎么办?

Mysql8忘记密码/重置密码UBUNTU下Mysql8忘记密码/重置密码步骤如下:先说下大概步骤:修改配置文件,使得用空密码可以进入mysql。然后置当前root用户为空密码。再次修改配置文件,不能...

MySQL忘记密码怎么办?Windows环境下MySQL密码重置图文教程

有不少小白在使用Windows进行搭建主机的时候,安装了一些环境后,其中有MySQL设置后,然后不少马大哈忘记了MySQL的密码,导致在一些程序安装及配置的时候无法进行。这个时候怎么办呢?重置密码呗?...

10种常见的MySQL错误,你可中招?_mysql常见错误提示及解决方法

【51CTO.com快译】如果未能对MySQL8进行恰当的配置,您非但可能遇到无法顺利访问、或调用MySQL的窘境,而且还可能给真实的应用生产环境带来巨大的影响。本文列举了十种MySQL...

Mysql解压版安装过程_mysql解压版安装步骤

Mysql是目前软件开发中使用最多的关系型数据库,具体安装步骤如下:第一步:Mysql官网下载最新版(mysql解压版(mysql-5.7.17-winx64)),Mysql官方下载地址为:https...

MySQL Root密码重置指南:Windows新手友好教程

如果你忘记了MySQLroot密码,请按照以下简单步骤进行重置。你需要准备的工具:已安装的MySQL以管理员身份访问命令提示符一点复制粘贴的能力分步操作指南1.创建密码重置文件以管理员...

安卓手机基于python3搜索引擎_python调用安卓so库

环境:安卓手机手机品牌:vivox9s4G运行内存手机软件:utermux环境安装:1.java环境的安装2.redis环境的安装aptinstallredis3.elasticsearch环...

Python 包管理 3 - poetry_python community包

Poetry是一款现代化的Python依赖管理和打包工具。它通过一个pyproject.toml文件来统一管理你的项目依赖、配置和元数据,并用一个poetry.lock文件来锁定所有依赖的精...

Python web在线服务生产环境真实部署方案,可直接用

各位志同道合的朋友大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题最近经...

官方玩梗:Python 3.14(πthon)稳定版发布,正式支持自由线程

IT之家10月7日消息,当地时间10月7日,Python软件基金会宣布Python3.14.0正式发布,也就是用户期待已久的圆周率(约3.14)版本,再加上谐音梗可戏称为π...

第一篇:如何使用 uv 创建 Python 虚拟环境

想象一下,你有一个使用Python3.10的后端应用程序,系统全局安装了a2.1、b2.2和c2.3这些包。一切运行正常,直到你开始一个新项目,它也使用Python3.10,但需要...

我用 Python 写了个自动整理下载目录的工具

经常用电脑的一定会遇到这种情况:每天我们都在从浏览器、微信、钉钉里下各种文件,什么截图、合同、安装包、临时文档,全都堆在下载文件夹里。起初还想着“过两天再整理”,结果一放就是好几年。结果某天想找一个发...