繁体   English   中英

如何使 python package 可从终端使用

[英]How to make a python package usable from terminal

我创建了一个开源 python package来翻译文本或使用不同的翻译器自动翻译,并将其发布在 pypi 上。 到目前为止它运行良好,我收到了一些很好的反馈和批评。

现在我不是来宣传这个项目的。 相反,我想问,如何或什么是使 package 可从终端使用的正确方法。 就像在我的示例中,项目名称是deep_translator 我的目标是能够从终端使用它。 正是这样的:

$ deep_translator translate --translator "google" --from "german" --to "english" --text="blabla"

我知道如果有人在他的机器上安装了我的 package,package 可能会添加到路径中。 因此,它可以从终端访问,但这必须取决于操作系统,对吧?

那么这样做的正确方法是什么。 我正在使用 python>=3.6 但这实际上是一个普遍的问题,而不是 python 特定的问题。 提前致谢

您可以在setup.py文件中注册命令行脚本 安装 package 后,会在路径上放置一个二进制文件,该文件会调用配置的 function。 例如:

# setup.py

setup(
    ...
    entry_points = {
        'console_scripts': ['deep_translator=deep_translator.main_module:main_func'],
    }
    ...
)

这里的main_module是一个假设的模块,托管main_func ,它将被调用。 在此 function 中,您可以设置ArgumentParser并解析 arguments:

# main_module.py

def main_func():
    parser = argparse.ArgumentParser()
    parser.add_argument(...)
    # more arguments here
    args = parser.parse_args()
    # do stuff with args

替代方案: __main__.py

您还可以使用顶级__main__.py模块,然后通过-m开关调用 package:

python -m deep_translator <args-go-here>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM