安装
=====
**Python 版本**:需要 **Python 3.9 及以上**。项目根目录 :file:`pyproject.toml` 中 ``python`` 字段为 ``>=3.9`` (当前不对 Python 3 的上限做额外限制;详见 `PyPI `_)。
**多平台**:本项目已在 macOS、Linux、Windows 等环境经过测试,可在上述平台正常使用。
使用 pip 安装
---------------
推荐使用 pip:
.. code-block:: bash
pip install -U cnmaps
.. note::
自 **cnmaps 2.x** 起,官方边界与样例数据已独立为 PyPI 上的 `cnmaps-data `_ 包;安装 ``cnmaps`` 时会默认一并安装该数据包,通常无需额外命令。
使用 conda 安装
-----------------
也可从 conda-forge 安装:
.. code-block:: bash
conda install -c conda-forge cnmaps
.. warning::
conda-forge 上当前仅维护到 **1.1.7**;**2.x** 及后续版本仅发布到 PyPI,conda 渠道不再继续跟进。
从源码安装(参与开发)
------------------------
若需本地修改源码并即时生效,可克隆 `主仓库 `_ 后进入仓库根目录,在虚拟环境中执行:
.. code-block:: bash
pip install -e .
上述命令以 **可编辑模式** 安装 ``cnmaps``,依赖会按 :file:`pyproject.toml` 解析。若要 **运行测试、flake8、black** 等,还需安装开发依赖:推荐使用 `Poetry `_ 执行
.. code-block:: bash
poetry install
或根据 :file:`pyproject.toml` 里 ``[tool.poetry.group.dev.dependencies]`` 自行用 pip 安装对应包。其中 **pytest-memray** 仅在非 Windows 平台作为可选依赖(用于性能相关测试)。
构建本 Sphinx 文档时,Read the Docs 使用 :file:`requirements/requirements-doc.txt` 列出文档构建依赖(Sphinx、sphinx-rtd-theme 等),站点配置见 :file:`.readthedocs.yaml`。
AI Skill 安装
---------------
``cnmaps`` 支持安装 AI Skill 描述,可以让 AI 更快、更准确地理解 ``cnmaps`` 的使用方法、常见代码套路和能力边界。对于习惯让 AI 协助写科研绘图脚本、做边界感知的数据处理、或采用 vibe coding 工作流的用户来说,安装这份 Skill 后,AI 可以具备流畅使用 ``cnmaps`` 各种函数功能的能力。
.. note::
AI Skill 能力仅支持 ``2.1.x`` 及以上版本。
安装 ``cnmaps`` 后,可以把这份 Skill 安装到当前项目目录,生成不同助手的本地指引:
.. code-block:: bash
cnmaps install-skill codex --mode local
cnmaps install-skill cursor --mode local
cnmaps install-skill claudecode --mode local
也可以安装到当前用户的全局目录:
.. code-block:: bash
cnmaps install-skill codex --mode global
cnmaps install-skill cursor --mode global
cnmaps install-skill claudecode --mode global
.. note::
``--mode local`` 会安装到当前项目目录,只会在该安装目录下生效;如果切换到其他项目目录,需要在新的目录里重新安装。``--mode global`` 会安装到用户主目录下对应助手的全局路径,通常是 ``$HOME/.claude``、``$HOME/.cursor``、``$HOME/.agents`` 等目录,因此跨项目目录也可以生效。``cnmaps`` 版本更新后,尤其是 Skill 定义本身有更新时,通常也推荐追加 ``--force`` 重新安装一遍,使本地 Skill 描述与当前版本保持同步。
.. tip::
目前 Cursor 兼容 Claude Code 的 Skill 定义格式,所以通常来说,如果你已经按 ``claudecode`` 模式安装了 Skill,Cursor 也往往可以自动识别这一份定义。