【问题标题】:Make Python Project Into Command Line Tool将 Python 项目变成命令行工具
【发布时间】:2019-07-08 02:17:37
【问题描述】:

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

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

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

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

【问题讨论】:

  • 可能有一点主要基于意见。你可以把这个cmd.py,所有外围设备放在/usr/bin,或者更好的/usr/local/bin,或者在/usr/bin或者你希望的地方创建一个单独的文件夹,然后将它添加到$PATH环境变量中。
  • 我一般用~/bin

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


【解决方案1】:

执行此操作的常用方法是在 setup.py 中定义一组入口点,并让打包基础架构为您完成繁重的工作。

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

这需要setuptools

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

【讨论】:

    【解决方案2】:

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

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

    #!/usr/bin/env python
    

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

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

    【讨论】:

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

      【讨论】:

        猜你喜欢
        • 2021-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-01
        相关资源
        最近更新 更多