Python Setuptools的 setup.py

Python的setup.py文件用于构建和分发包,配合setuptools扩展distutils的功能,支持包的安装、依赖管理和发布。当pip无法使用时,可以下载.whl或通过setup.py安装。setuptools提供entry_points来创建命令行工具,并通过MANIFEST.in管理非Python文件。安装命令包括build、install、develop。setup.py的install_requires管理依赖,dependency_links指定依赖包下载路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 的 setup.py

背景

pip 是最主流的包管理方案,使用

pip install xxx

pip 无法正常下载Python模块,或者需要在离线环境及无网络环境安装Python包的时候,可以采用安装 .whl文件或者setup.py文件的方式。

一般的可以在下面的这个网站找到: https://pypi.org/

下载对应的包的whl文件,然后执行

 pip install XXX.whl

在安装普通的python包时,利用pip工具相当简单。采用setup.py去构建环境,将自己写的模块以及相应的依赖库一起打包,用setup去完成这个任务。 所以很多github代码都提供setup.py方便我们一键安装

如果您下载的软件包在根文件夹中具有“ setup.py”,则可以通过运行以下命令进行安装:

python setup.py install

如果你想安装一个模块但又不想安装pip,那么唯一的选择就是从setup.py文件安装模块。这可以通过python setup.py install。

什么是setup.py、setuptools

官网:Building and Distributing Packages with Setuptools
参考URL: https://setuptools.pypa.io/en/latest/setuptools.html

setup.py是一个 python 文件,它的存在表明您要安装的模块/包可能已经用 Setuptools 打包和分发,这是分发 Python 模块的标准。 它的目的是正确安装软件。

setuptools是python自带的用来构建包的工具,构建出来的wheel(.whl)可供其他人pip install和import。

总之,setuptools就是比distutils好用的多,基本满足大型项目的安装和发布!

一个最基本的”setup.py”文件如下:

#coding:utf8
from setuptools import setup
setup(
   name='MyApp',        # 项目名
   version='1.0',       # 版本号
   packages=['myapp']   # 包括在安装包内的Python包
)

什么是setuptools

setuptools官方文档:https://setuptools.readthedocs.io

distutils 是标准库中负责建立 Python 第三方库的安装器,使用它能够进行 Python 模块的安装和发布。

setuptools 是 distutils 增强版,不包括在标准库中。其扩展了很多功能,能够帮助开发者更好的创建和分发 Python 包。大部分 Python 用户都会使用更先进的 setuptools 模块。

Setuptools 提供一流的setup.py文件支持作为配置机制。setup.py 调用了 setuptools 包中的setup方法。

然而,重要的是要记住,强烈建议不要将此文件作为脚本(例如)运行,并且大多数命令行界面已经(或将要)弃用 (例如,…)。python setup.py sdistpython setup.py installpython setup.py bdist_wininst

** 我们还建议用户通过pyproject.tomlsetup.cfg以更具声明性的方式公开尽可能多的配置,并仅使用动态部分保持最小化(如果适用,甚至完全省略)**。setup.py有关更多背景信息,请参阅为什么不应该直接调用 setup.py

setup.py命令

查看所有支持的命令:

python setup.py --help-commands

构建安装时所需的所有内容:

python setup.py build

安装包到系统环境中。该命令会将当前项目安装到当前Python环境的”site-packages”目录下,这样其他项目就可以像导入标准库一样导入该项目的代码了。

python setup.py install

以开发方式安装包:
如果项目在开发过程中会频繁变更,每次安装还需要先将原来的版本卸掉,会很麻烦。使用”develop”开发方式安装的话,项目代码不会真的被拷贝到本地Python环境的”site-packages”目录下,而是在”site-packages”目录里创建一个指向当前项目位置的链接。这样如果当前位置的源码被改动,就会马上反映到”site-packages”里。

python setup.py develop

用于包的上传发布:

python setup.py register

setup.py内容

生成可执行文件的分发(安装到指定路径)

参考URL: https://amir.rachum.com/blog/2017/07/28/python-entry-points/

网上demo:

# 用来支持自动生成脚本,安装后会自动生成 /usr/bin/pmm 的可执行文件(windows管理员权限下会在Python文件夹的script里面生成pmm.exe)
# 该文件入口指向 pimm/pimm_module.py 的main 函数
entry_points={'console_scripts': ['pmm=pimm.pimm_module:main']},
 
# 将 bin/foo.sh 和 bar.py 脚本,生成到系统 PATH中
# 执行 python setup.py install 后
# 会生成 如 /usr/bin/foo.sh 和 如 /usr/bin/bar.py
scripts=['bin/foo.sh', 'bar.py']

将python模块转变为命令行工具:
如果我们希望 module 中的函数不仅仅只是被其他 python 程序通过 import 调用,还可以直接在命令行中执行,那么可以做如下修改:(设置参数entry_points里的’console_scripts’)

# greeting_module.py
import pyjokes

def greeting_func(name):
    print("Hello,", name)
    print("Here is a joke for you:\n", pyjokes.get_joke())

def main():
    import sys
    arg = sys.argv[1]
    greeting_func(arg)
# setup.py 
from setuptools import setup, find_packages

setup(
	# ...,
    entry_points={       # 设置了在命令行中如何使用greeting_module中的main函数
        'console_scripts': [
            'greeting=greeting_pkg.greeting_module:main'	# <command>=<package>.<module>:<function>
        ]
    }
)
引入非Python文件

如果想引入静态文件,如JS、CSS、图片等,怎么做?
在项目根目录下添加一个”MANIFEST.in”文件夹。假设我们把所有静态文件都放在”static”子目录下,

我们在清单文件”MANIFEST.in”中,列出想要在包内引入的目录路径:

recursive-include myapp/static *
recursive-include myapp/xxx *

recursive-include表明包含子目录。

在”setup.py”中将include_package_data参数设为True:

#coding:utf8
from setuptools import setup
setup(
   name='MyApp',        # 项目名
   version='1.0',# 版本号
   packages=['myapp'],  # 包括在安装包内的Python包
   include_package_data=True   # 启用清单文件MANIFEST.in
)

如果你想排除一部分文件,可以在”setup.py”中使用exclude_package_date参数:

setup(
    ...
    include_package_data=True, # 启用清单文件MANIFEST.in
    exclude_package_date={'':['.gitignore']}
)
依赖管理

我们的项目会依赖其他Python模块,如何在setup.py中管理这些依赖呢?

修改”setup.py”文件,加入install_requires参数:

#coding:utf8
from setuptools import setup
setup(
   name='MyApp',        # 项目名
   version='1.0',# 版本号
   packages=['myapp'],  # 包括在安装包内的Python包
   include_package_data=True,   # 启用清单文件MANIFEST.in
   exclude_package_date={'':['.gitignore']},
   install_requires=[   # 依赖列表
       'Flask>=0.10',
       'Flask-SQLAlchemy>=1.5,<=2.1'
   ]
)

可以通过dependency_links指定依赖包下载路径。install_requires中的包在安装时会先去PyPI下载并安装,如果包在PyPI中找不到,则会从dependency_links标识的URL中获取:

setup(
   ...
   install_requires=[   # 依赖列表
       'Flask>=0.10',
       'Flask-SQLAlchemy>=1.5,<=2.1'
   ],

   dependency_links=[   # 依赖包下载路径
       'http://example.com/dependency.tar.gz'
   ]
)

路径应指向一个”egg”包或”tar.gz”包,也可以是个包含下载地址(一个”egg”包或”tar.gz”包)的页面。

编写 setup.py 文件, setup.py是python模块分发与安装的指导文件。
有了setup.py文件,运行下面这条命令,可以进行模块的安装。
与 .whl文件一样,先cmd到指定位置,然后输入:

python setup.py install

安装

$ pip install setuptools
### 回答1: Navicat是一款数据库管理软件,可以在Linux系统中使用。要在Linux系统中安装Navicat,需要按照以下步骤进行: 1. 下载Navicat的Linux版本,可以在官网上获取。 2. 使用终端进入下载文件的目录。 3. 使用命令:sudo dpkg -i navicat-xxx-linux-x64.deb(xxx为版本号),进行安装。 4. 安装完成后,在应用程序列表中可以找到Navicat。 请注意,如果安装失败,可能缺少其他依赖库,需要使用 "sudo apt-get install -f" 命令解决依赖问题。 ### 回答2: Navicat是一款流行的数据库管理软件,现在已经在各种操作系统中使用。在Linux操作系统中安装Navicat有几种方法,下面将为您详细介绍。 第一种方法是在Linux环境中手动安装Navicat。在安装之前,您需要确保您的Linux系统中具有GUI,例如Gnome或KDE。然后按照以下步骤进行操作: 1. 下载适合Linux环境的Navicat软件包; 2. 打开终端,将Navicat软件包解压到任意目录下; 3. 打开终端,进入Navicat安装目录; 4. 输入./start_navicat.sh 运行Navicat即可。 第二种方法是通过WINE在Linux中运行Navicat。WINE是一款软件,它可以在Linux环境中运行Windows软件。以下是安装步骤: 1. 下载WINE软件; 2. 安装WINE; 3. 下载适合Windows的Navicat软件包; 4. 使用WINE打开Navicat.exe软件包,安装即可。 第三种方法是使用virtual machine和Windows镜像文件Linux环境中运行Navicat。下面是安装步骤: 1. 下载并安装virtual machine(如VirtualBox); 2. 下载适合VirtualBox的Windows镜像文件; 3. 将镜像文件与VirtualBox关联并启动Windows虚拟机; 4. 在Windows虚拟机中安装Navicat。 总之,以上三个方法基本覆盖了Linux操作系统中安装Navicat的所有步骤。您可以根据自己的需要和了解程度选择任何一种。希望这些步骤能帮助您成功安装Navicat并开始进行数据库管理! ### 回答3: Navicat是一个主要用于管理和编辑数据库的工具,它支持多种数据库的管理,例如MySQL、Oracle、SQLServer等,是一款非常实用的数据库工具。 在Linux系统中安装Navicat并不是很难,下面介绍一下具体的安装步骤: 1.下载Navicat安装包 首先要从Navicat官网上下载Linux版Navicat安装包,Navicat官网下载地址是:https://www.navicat.com.cn/products/navicat-premium。在下载时需要根据自己的Linux系统类型(64位或者32位)进行选择。 2.解压安装包 将下载好的navicat***linux.tar.gz压缩包解压到任意文件夹。 3.运行Navicat 进入到解压后的文件夹,运行Navicat启动脚本,在终端中输入以下指令: $ cd /path/to/extracted/folder $ ./start_navicat 其中/path/to/extracted/folder是解压后文件夹所在的路径。执行完以上命令之后,就可以在Linux系统中启动Navicat了。 4.输入序列号 首次运行Navicat,在打开的注册窗口中输入你的授权序列号,如果没有序列号,可以选择试用30天,这样便可以使用Navicat的所有功能。 5.连接数据库 在Navicat中连接数据库,需要在连接窗口中输入数据库的信息,包括主机名、端口号、用户名和密码等。 总体来说,安装Navicat在Linux系统中比较简单,在按照以上步骤进行操作之后,便可以顺利地使用Navicat进行数据库的管理和维护。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西京刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值