Управление зависимостями навыков
Скрипты навыков обычно требуют сторонних библиотек. То, как объявлять, устанавливать и фиксировать эти зависимости, — основа надёжной работы навыка.
Файлы объявления зависимостей
Создайте в каталоге scripts/ навыкаrequirements.txt(Python) илиpackage.json(Node.js), чтобы централизованно объявить все зависимости.
Зависимости Python: requirements.txt
# 文件路径:scripts/requirements.txt # 格式:包名==版本号(锁定版本,确保可重复安装) pandas==2.1.4 # 数据处理 openpyxl==3.1.2 # Excel 读写 pypdf==3.17.0 # PDF 处理 python-docx==1.1.0 # Word 文档处理 requests==2.31.0 # HTTP 请求
Зависимости Node.js: package.json
Пример
"name": "my-skill-scripts",
"version": "1.0.0",
"description": Зависимости Node.js для скриптов навыков,
"dependencies": {
"xlsx": "^0.18.5",
"puppeteer": "^21.0.0"
}
}
Объясните способ установки в SKILL.md
## 依赖安装 首次使用前,运行以下命令安装 Python 依赖: ```bash pip install -r scripts/requirements.txt --break-system-packages ``` 若运行环境已预装依赖,可跳过此步骤。
Автоматически устанавливать зависимости в скрипте
Для навыков, которые должны запускаться без конфигурации, можно добавить самопроверку зависимостей и логику автоматической установки в начале скрипта.
Пример
import subprocess
import sys
import importlib
# Определите список зависимостей: (имя для pip install, имя импорта, требование к версии)
ЗАВИСИМОСТИ = [
("pandas", "pandas", ">=2.0"),
("openpyxl", "openpyxl", ">=3.0"),
("python-docx", "docx", None), # Нет требований к версии
]
def install_if_missing(pip_name: str, import_name: str) -> bool:
"""Проверить и установить пакеты зависимостей при необходимости"""
try:
importlib.import_module(import_name)
return True # Уже установлено, возвращаем сразу
except ImportError:
print(f"Установка: {pip_name}...")
result = subprocess.run(
[sys.executable, "-m", "pip", "install", pip_name,
"--break-system-packages", "--quiet"],
capture_output=True, text=True
)
if result.returncode == 0:
print(f"Установка выполнена успешно: {pip_name}")
return True
print(f"Установка не удалась: {pip_name}\n{result.stderr}")
return False
def ensure_all_deps() -> bool:
"""Убедиться, что все зависимости установлены"""
failed = []
for pip_name, import_name, _ in DEPENDENCIES:
if not install_if_missing(pip_name, import_name):
failed.append(pip_name)
if failed:
print(f"Не удалось установить следующие зависимости: {', '.join(failed)}")
return False
return True
if __name__ == "__main__":
if not ensure_all_deps():
sys.exit(1)
# После того как зависимости будут готовы, выполните логику как обычно
import pandas as pd
print("Все зависимости готовы, начинаем выполнение...")
正在安装:python-docx... 安装成功:python-docx 所有依赖已就绪,开始执行...
Стратегии разрешения конфликтов версий
Когда требуемая Skill версия пакета конфликтует с существующей системной версией, есть несколько способов решения:
| Стратегия | Подход | Применимый сценарий |
|---|---|---|
| Нестрогие требования к версиям | Используйте >= вместо ==, чтобы разрешить более высокие версии | В большинстве сценариев, хорошая совместимость |
| Виртуальное окружение | Установка в venv, изолированно от системы | Строгие требования к версиям |
| Использовать существующую системную версию | Не фиксируйте версию; используйте установленную в системе версию | Зависимости — распространённые библиотеки, и различия версий оказывают минимальное влияние |
Создание виртуального окружения (необязательно)
Пример
python3 -m venv scripts/.venv
# Активация виртуального окружения
source scripts/.venv/bin/activate
# Установка зависимостей в виртуальном окружении
pip install -r scripts/requirements.txt
# Запуск скрипта в виртуальном окружении
python scripts/process.py
В среде выполнения Claude виртуальное окружение обычно не требуется, поскольку каждая сессия относительно изолирована. Виртуальные окружения в основном используются во время локальной разработки, чтобы избежать конфликтов с другими проектами на машине разработчика.
Стандарты документирования зависимостей
В SKILL.md или отдельном README все внешние зависимости должны быть четко перечислены, чтобы пользователи могли понять требования перед установкой.
## 系统要求 ### 运行环境 - Python 3.8 或更高版本 - pip(Python 包管理工具) ### Python 依赖 | 包名 | 版本 | 用途 | |------|------|------| | pandas | >=2.0 | 数据读取与处理 | | openpyxl | >=3.0 | Excel 文件读写 | | python-docx | 任意 | Word 文档生成 | ### 系统工具(可选) - pandoc:格式转换(apt-get install pandoc)Другие расширения