python - 如何在Python中创建一个可以通过PIP安装的CLI?

标签 python pip command-line-interface

正如标题所示,我正在尝试使 python 脚本可以从命令行访问。我找到了像 click 这样的库和 argv这使得访问从命令行传递的参数变得容易,但用户仍然必须通过 Python 运行脚本。

而不是

python /location/to/myscript.py

我希望能够做到

myscript

从任何目录

据我了解,我可以通过编辑 PATH 变量在我的计算机上实现此目的。但是,我希望能够简单地执行以下操作:

pip install myscript

然后通过从任何地方键入 myscript 来访问脚本。我是否需要在 setup.py 中放入一些特殊代码?

最佳答案

使用console_scripts Hook 到特定的Python方法(不是整个可执行文件),setup.py文件:

from setuptools import setup
setup(
    ...
    entry_points = {
        'console_scripts': ['mybinary=mymodule.command_line:cli'],
    },
    name='mymodule',
    ...
)

command_line.py 脚本将是:

import mymodule

def cli():
    print("Hello world!")

项目目录如下所示:

myproject/
    mymodule/
        __init__.py
        command_line.py
        ...
    setup.py

Setuptools will generate a standalone script ‘shim’ which imports your module and calls the registered function.

该垫片允许您直接调用 mybinary 并确保它被 python 正确调用。它提供特定于平台的垫片(即,在 Windows 上它生成一个 .exe)。

See packaging documentation for more details .

关于python - 如何在Python中创建一个可以通过PIP安装的CLI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56534678/

相关文章:

linux - 如何在 Linux 中操作重启一个 bash shell 脚本

python - 无法使用 TextBlob 启动和运行

go - 重定向Go中子进程的stdout管道

python - 如何在 cythonize 脚本中包含 numpy?

python - 根据多个条件过滤数据框

python - 安装后找不到pip命令

python - 无法安装flask-mysqldb

python - 当自定义命名空间为对象时,未设置默认 argparse 参数值

python - Odoo 报告字段数据在预期时为 "Undefined"False

python - 使用python重命名服务器上的文件