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

时间:2019-02-14 05:42:30

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

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

我当时以为我可以将cmd.py文件简单地移到/usr/bin/$PATH中包含的其他目录中,但是由于我还有其他可以与{{ 1}},我的cmd.py中将有多个文件。

我可以做的另一件事是在/usr/bincmd.py之间建立符号链接,如下所示:/usr/bin/cmd,但是我该把cmd.py放在哪里?这是最佳做法吗?

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

3 个答案:

答案 0 :(得分:1)

有一件事,我不建议在/usr/bin中进行安装,因为这是系统程序的去向。 /usr/local/bin或添加到$PATH的另一个自定义目录可能是合适的。

要使其像典型程序一样运行,请将其命名为cmd,因为它不需要扩展名,并将其添加到程序顶部:

#!/usr/bin/env python

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

然后可以使用chmod +x <path to your program>将其设置为可执行文件。确保您具有执行此操作所需的特权(即可能sudo)。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

通常的方法是在setup.py中定义一组入口点,然后让包装基础架构为您完成繁重的工作。

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

这需要setuptools

以下是此工具的一些文档:https://python-packaging.readthedocs.io/en/latest/command-line-scripts.html