使Python项目成为命令行工具

问题描述 投票:0回答:3

我有一个包含多个文件的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

python linux command-line command-line-arguments argparse
3个回答
1
投票

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

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

这需要setuptools

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


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. 您可以在路径中添加文件夹。 在.bashrc中添加以下内容 export PATH = [New_Folder_Path]:$ PATH
  2. 将python程序放在步骤1中创建的path_folder中。
  3. 使其可执行:chmod u + x [filename]
  4. 打开一个新的终端,你应该能够调用python程序
  5. 注意:确保将shebang放在你的python文件中:#!/ usr / bin / env python3
© www.soinside.com 2019 - 2024. All rights reserved.