python - 将 Python 项目变成命令行工具

标签 python linux command-line command-line-arguments argparse

我有一个包含多个文件的 python 项目和一个使用 argparse 解析参数的 cmd.py,在其他文件中有关键函数。我想做的是:我想这样做,如果在命令行中输入 cmd -p hello.txt 它会运行该 python 文件。

我想我可以简单地将 cmd.py 文件移动到 /usr/bin/$PATH 中包含的其他目录,但是因为我有其他文件可以与我的 cmd.py 一起使用,所以我的 /usr/bin 中会有多个文件。

我可以做的另一件事是在 cmd.py/usr/bin/cmd 之间建立符号链接(symbolic link),如下所示:ln -s/path/to/cmd.py/usr/bin/cmd,但是我应该把 cmd.py 放在哪里?这是最佳实践吗?

注意:我打算让它在 Linux 和 MacOS X 上运行,而不是在 Windows 上运行

最佳答案

通常的做法是在 setup.py 中定义一组入口点,让打包基础设施为您完成繁重的工作。

setup(
    # ...
    entry_points = {
        'console_scripts': ['cmd = cmd:main'],
    }
)

这需要setuptools

这是该设施的一些文档:https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html

关于python - 将 Python 项目变成命令行工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54683892/

相关文章:

python - 将整数数组转换为字符串的最佳方法是什么?

我可以在不关闭 fd 的情况下关闭 FILE 吗?

linux - 使用 jenkins 管道脚本找出最后一次提交

php - 在 Linux 上设置 SVN/LAMP/测试服务器,从哪里开始?

command-line - 从 7zip 文件中删除元数据

command-line - 如何使用不同的文件夹启动intellij idea终端?

java - 如何将 Java 中生成的序列化 JSON 转换为 Python 中的复杂对象?

python - Pygame.mixer 模块丢失?

python - 循环使用两个计数器

windows - 无法在 Windows 命令外壳中转义空格