Я работаю над оболочкой для инструмента под названием Coverity. Я хочу добавить некоторый синтаксический сахар к существующим командам, поэтому я использую библиотеку Python Click для создания простого интерфейса командной строки.
Проблема возникает, когда я следую инструкциям на странице документации Click Packaging Entry Points, в которой говорится, что нужно создать виртуальную среду, а затем запустить pip install -e . .
Эта команда выполнена успешно или, по крайней мере, так кажется, но после ее запуска моя команда CLI cov недоступна. Подробности о каталоге и файлах ниже.
Я использую Apple Silicon Mac с Sonoma 14.6.1.
Вот краткий обзор того, что я сделал на данный момент.
$ which python3
/usr/local/bin/python3
$ python3 -m venv venv
$ source ./venv/bin/activate
$ which python
~/Desktop/Scripts/coverity-client/venv/bin/python
$ python --version
Python 3.12.1
$ which pip
~/Desktop/Scripts/coverity-client/venv/bin/pip
$ pip install -e .
Obtaining ~/Scripts/coverity-client
Installing build dependencies ... done
Checking if build backend supports build_editable ... done
Getting requirements to build editable ... done
Preparing editable metadata (pyproject.toml) ... done
Requirement already satisfied: click>=8.3.0 in ./venv/lib/python3.12/site-packages (from cov==1.0.0) (8.3.0)
Building wheels for collected packages: cov
Building editable for cov (pyproject.toml) ... done
Created wheel for cov: filename=cov-1.0.0-0.editable-py3-none-any.whl size=1431 sha256=4e62cae495d50738c1d0a45bcc2a373d341e8e473563e1384523b25b45a1dc12
Stored in directory: /private/var/folders/rk/7x0cwmtd009024nm3qdz9jxr0000gn/T/pip-ephem-wheel-cache-i4s39lw9/wheels/93/81/02/9f29175e8cf2a8f44a4fd6285a7a954922e3ab9f6a3326653d
Successfully built cov
Installing collected packages: cov
Attempting uninstall: cov
Found existing installation: cov 1.0.0
Uninstalling cov-1.0.0:
Successfully uninstalled cov-1.0.0
Successfully installed cov-1.0.0
$ which cov
cov not found
Команда pip show cov указывает, что cov был установлен в папку site-packages:
pip show cov
Name: cov
Version: 1.0.0
Summary: Coverity command line tools
Home-page:
Author:
Author-email:
License:
Location: ~/Desktop/Scripts/coverity-client/venv/lib/python3.12/site-packages
Editable project location: ~/Desktop/Scripts/coverity-client
Requires: click
Required-by:
и
$ ls -l venv/lib/python3.12/site-packages
__editable__.cov-1.0.0.pth
click
click-8.3.0.dist-info
cov-1.0.0.dist-info
pip
pip-25.3.dist-info
Но не в папку bin.
$ ls -l venv/bin
Activate.ps1
activate
activate.csh
activate.fish
build
pip
pip3
pip3.12
python -> python3.12
python3 -> python3.12
python3.12 -> /Library/Frameworks/Python.framework/Versions/3.12/bin/python3.12
Наконец, я могу зайти в оболочку Python, пока venv активен, и импортировать свой проект:
$ python
Python 3.12.1 (v3.12.1:2305ca5144, Dec 7 2023, 17:23:38) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin
>>> from cov import cov
>>> cov.build()
~/coverity-tools/2025.9.0/bin/
Может ли кто-нибудь помочь мне понять, почему не работает должным образом?
ДЕТАЛИ
Каталог моего проекта:
tree
.
├── pyproject.toml
├── requirements.txt
└── src
└── cov
├── __init__.py
└── cov.py
Мой pyproject.toml.
[project]
name = "cov"
version = "1.0.0"
description = "Coverity command line tools"
requires-python = ">=3.11"
dependencies = [
"click>=8.3.0",
]
[project.scripts]
build = "cov.cov:build"
cov.py
import subprocess
import click
@click.command()
@click.option('--bin_path', default='~/coverity-tools/2025.9.0/bin/', help='Path to coverity tools.')
def build(bin_path: str, ):
click.echo(bin_path)
Подробнее здесь: https://stackoverflow.com/questions/798 ... ct-to-path