将 Python 项目制作成命令行工具

Make Python Project Into Command Line Tool

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

我想我可以简单地将 cmd.py 文件移动到 /usr/bin/$PATH 中包含的其他目录,但是因为我有其他文件可以工作使用我的 cmd.py,我的 /usr/bin.

中将有多个文件

我可以做的另一件事是在 cmd.py/usr/bin/cmd 之间创建一个符号 link,如下所示:ln -s /path/to/cmd.py /usr/bin/cmd,但是我应该把cmd.py?这是最佳做法吗?

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

一方面,我不建议在 /usr/bin 中安装,因为那是系统程序所在的位置。 /usr/local/bin 或添加到 $PATH 的另一个自定义目录可能是合适的。

至于像典型程序一样把它变成运行,把它命名为cmd,不管你把它放在哪里,因为扩展名不是必需的,并将这一行添加到程序的顶部:

#!/usr/bin/env python

(如果要确保使用 Python 3.x,您可能需要指定 python3 而不是仅 python。)

然后可以使用 chmod +x <path to your program> 使其可执行。确保您拥有执行此操作所需的权限(即可能需要 sudo)。

  1. 您可以在路径中添加文件夹。
    • 在 .bashrc 添加以下内容
    • 导出路径=[New_Folder_Path]:$路径
  2. 将 python 程序放入您在第 1 步创建的 path_folder 中。
  3. 使其可执行:chmod u+x [文件名]
  4. 打开一个新终端,应该可以调用python程序
  5. 注意:确保将 shebang 放入您的 python 文件中:#!/usr/bin/env python3

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

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

这需要setuptools

这里是这个工具的一些文档:https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html