从 pip 安装后没有 python 的 CLI 应用程序
CLI app without python after install from pip
我看过几个 python 包的例子,在从 pypi 之类的东西安装后,有与工具关联的 CLI。
两个示例:rasa(例如rasa init
)或streamlit(例如streamlit hello
)。
我有兴趣为我自己的包探索这个,我的要求是我不想在我的命令前加上 python
。例如,如上所示 rasa init
,而不是 python rasa init
,但诚然,我不知道这是如何发生的。
这个guide可能会有帮助
这是我的一个简单的 setup.py 来说明我是如何做到的。
scripts=
选项允许您指定脚本的位置。当您安装它时,这些脚本将包含在允许您 运行 它们的路径中。
脚本应该是:
- 可执行
chmod +x
- 有一个 python shebang
#!/usr/bin/env python
- 最好的做法是让
__name__
== __main__
部分代码
要测试它,您可以构建它并将其安装在虚拟环境中
python setup.py sdist bdist_wheel # This will build the tar.gz (identical to what pypi uses)
virtualenv venv # Create an env so you don't mess your setups
source venv/bin/activate # Activate environment
pip install -e dist/<package_name>-<version>.tar.gz # This installs it in the venv
pip list
应该显示已安装
如果安装成功,您的脚本应该可用。在 Mac 上,它是 which script_name
。该路径将指向 venv
.
这是 streamlit
的 setup.py
的相关片段:
setuptools.setup(
...
entry_points={"console_scripts": ["streamlit = streamlit.cli:main"]},
...
# For Windows so that streamlit * commands work ie.
# - streamlit version
# - streamlit hello
scripts=["bin/streamlit.cmd"],
)
entry_points
的解释如下:Explain Python entry points?
scripts
的解释如下:
- 这里有一个关于 Pros and cons of 'script' vs. 'entry_point' in Python command line scripts
的问题
有趣的是,一些消息来源似乎声称 entry_points
不适用于 Windows,而其他消息来源声称 scripts
不适用于 Windows ].就我个人而言,我一直在使用 entry_points
,它在 Windows 10 和 Linux.
上对我都有效
我看过几个 python 包的例子,在从 pypi 之类的东西安装后,有与工具关联的 CLI。
两个示例:rasa(例如rasa init
)或streamlit(例如streamlit hello
)。
我有兴趣为我自己的包探索这个,我的要求是我不想在我的命令前加上 python
。例如,如上所示 rasa init
,而不是 python rasa init
,但诚然,我不知道这是如何发生的。
这个guide可能会有帮助
这是我的一个简单的 setup.py 来说明我是如何做到的。
scripts=
选项允许您指定脚本的位置。当您安装它时,这些脚本将包含在允许您 运行 它们的路径中。
脚本应该是:
- 可执行
chmod +x
- 有一个 python shebang
#!/usr/bin/env python
- 最好的做法是让
__name__
==__main__
部分代码
要测试它,您可以构建它并将其安装在虚拟环境中
python setup.py sdist bdist_wheel # This will build the tar.gz (identical to what pypi uses)
virtualenv venv # Create an env so you don't mess your setups
source venv/bin/activate # Activate environment
pip install -e dist/<package_name>-<version>.tar.gz # This installs it in the venv
pip list
应该显示已安装
如果安装成功,您的脚本应该可用。在 Mac 上,它是 which script_name
。该路径将指向 venv
.
这是 streamlit
的 setup.py
的相关片段:
setuptools.setup(
...
entry_points={"console_scripts": ["streamlit = streamlit.cli:main"]},
...
# For Windows so that streamlit * commands work ie.
# - streamlit version
# - streamlit hello
scripts=["bin/streamlit.cmd"],
)
entry_points
的解释如下:Explain Python entry points?scripts
的解释如下:- 这里有一个关于 Pros and cons of 'script' vs. 'entry_point' in Python command line scripts 的问题
有趣的是,一些消息来源似乎声称 entry_points
不适用于 Windows,而其他消息来源声称 scripts
不适用于 Windows ].就我个人而言,我一直在使用 entry_points
,它在 Windows 10 和 Linux.