【发布时间】:2020-09-27 03:43:11
【问题描述】:
我想像其他 cli 工具一样运行我构建的 CLI,例如,kubectl、redis 等。目前,我运行我的 cli:python3 cli.py subarg --args;相反,我想运行:invdb subarg --args 其中 invdb 是 Python 包。
项目仓库的结构是:
.
├── CHALLENGE.md
├── Pipfile
├── Pipfile.lock
├── README.md
├── __pycache__
│ └── config.cpython-38.pyc
├── data_platform_challenge_darwin
├── data_platform_challenge_linux
├── data_platform_challenge_windows
├── discussion_answers_rough_work
├── dist
│ ├── invdb-0.0.1.tar.gz
│ └── invdb-tesla-kebab-mai-haddi-0.0.1.tar.gz
├── example.json
├── invdb
│ ├── __init__.py
│ ├── analysis.py
│ ├── cleanup.py
│ ├── cli.py
│ ├── config.py
│ ├── etl.py
│ ├── groups.py
│ ├── initialize_db.py
│ └── nodes.py
├── invdb.egg-info
│ ├── PKG-INFO
│ ├── SOURCES.txt
│ ├── dependency_links.txt
│ └── top_level.txt
├── setup.py
├── test.db
└── tests
【问题讨论】:
-
Python 是一种解释性语言,你说的是在 PATH 上有一个可执行文件。有很多方法可以做到这一点(主要是通过 setuptools 的入口点垫片)。以the v1 aws cli 为例。
-
>Python 是一种解释性语言,您说的是在 PATH 上有一个可执行文件。即使有办法,我要求拥有的东西是好事还是
python3 cli.py ...是更好的方法? -
我写了一个应该有帮助的答案。优点是使用方便。缺点是必须安装。我在我的公司制作了一个复杂的 Python 包供内部使用,它使用了这个 entry_point shim 技术,但是它需要一些基础设施才能变得有用(我们必须建立一个 PyPI 服务器,连接 CI/CD,教所有开发人员机器如何找到内部 PyPI,说服开发人员执行
pip install,而不仅仅是从源代码同步和运行等...)。这并不是说这些缺点是必要的,只是它们是可能的。
标签: python python-3.x command-line-interface