如何在Python Shell中传递命令行参数给函数及pip打包部署问题
Hey there! Let's tackle your two Python questions one by one, nice and clear:
1. 如何在Python Shell中向Python函数传递命令行参数?
命令行参数通常是给脚本用的,但在交互式Python Shell里也有几种实用方式,看你具体场景:
启动Shell时直接传入参数
如果你的函数依赖sys.argv或者argparse读取命令行参数,可以在启动Python Shell时带上参数,比如:python -i your_script.py 3 4 5进入Shell后,
sys.argv就会包含['your_script.py', '3', '4', '5'],直接调用函数就能读取这些参数。在Shell中模拟命令行参数
要是你已经在Shell里了,想临时给函数传类似命令行的参数,可以手动修改sys.argv:import sys # 模拟脚本名+3个参数 sys.argv = ['area.py', '3', '4', '5'] # 然后调用你的函数 from area import area_of_triangle area_of_triangle()不过说实话,如果函数本身可以直接接收参数(比如
area_of_triangle(a, b, c)),直接调用函数传参反而更简单,没必要绕命令行参数的路子。
2. 打包可通过pip install安装的命令行脚本
你的现有文件夹结构是个好开头,我们只需要加一点配置,就能让它变成可安装的命令行工具:
第一步:完善area.py的可执行性
确保你的area.py里有if __name__ == "__main__":块,这样它既可以被导入,也可以直接运行。比如补充后的代码:
import argparse from math import sqrt def area_of_triangle(): parser = argparse.ArgumentParser(description='用海伦公式计算三角形面积') parser.add_argument('a', type=float, help='边长a的长度') parser.add_argument('b', type=float, help='边长b的长度') parser.add_argument('c', type=float, help='边长c的长度') args = parser.parse_args() # 海伦公式计算逻辑 s = (args.a + args.b + args.c) / 2 area = sqrt(s * (s - args.a) * (s - args.b) * (s - args.c)) print(f"三角形面积为: {area:.2f}") # 允许直接运行脚本 if __name__ == "__main__": area_of_triangle()
第二步:添加打包配置文件
现在推荐用pyproject.toml来配置打包(替代旧的setup.py),在你的<package_name>目录的上级目录创建这个文件,内容如下:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "<package_name>" # 替换成你的包名,比如triangle-calculator version = "0.1.0" authors = [ { name="你的名字", email="your.email@example.com" } ] description = "一个通过命令行计算三角形面积的工具" requires-python = ">=3.7" [project.scripts] # 这里定义安装后可用的命令名,以及对应的函数入口 triangle-area = "<package_name>.area:area_of_triangle"
如果你习惯用setup.py,也可以创建这个文件:
from setuptools import setup, find_packages setup( name="<package_name>", version="0.1.0", packages=find_packages(), entry_points={ 'console_scripts': [ 'triangle-area = <package_name>.area:area_of_triangle', ], }, )
第三步:打包并安装
- 先安装打包工具:
pip install build - 在项目根目录(也就是
<package_name>和pyproject.toml所在的目录)运行打包命令:
这会生成一个python -m builddist文件夹,里面有.whl和.tar.gz格式的安装包。 - 安装你的包:
或者直接本地安装(修改代码后可以快速重新安装):pip install dist/<package_name>-0.1.0-py3-none-any.whlpip install -e .
安装完成后,你就可以在任意命令行直接输入triangle-area 3 4 5来运行你的三角形面积计算工具啦!
内容的提问来源于stack exchange,提问作者chidimo

