将 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
)。
- 您可以在路径中添加文件夹。
- 在 .bashrc 添加以下内容
- 导出路径=[New_Folder_Path]:$路径
- 将 python 程序放入您在第 1 步创建的 path_folder 中。
- 使其可执行:chmod u+x [文件名]
- 打开一个新终端,应该可以调用python程序
- 注意:确保将 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
我有一个包含多个文件的 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
)。
- 您可以在路径中添加文件夹。
- 在 .bashrc 添加以下内容
- 导出路径=[New_Folder_Path]:$路径
- 将 python 程序放入您在第 1 步创建的 path_folder 中。
- 使其可执行:chmod u+x [文件名]
- 打开一个新终端,应该可以调用python程序
- 注意:确保将 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