安装 spaCy
# Note M1 GPU support is experimental, see Thinc issue #792python -m venv .envsource .env/bin/activatesource .env/bin/activate.env\Scripts\activatepython -m venv .envsource .env/bin/activatesource .env/bin/activate.env\Scripts\activateconda create -n venvconda activate venvpip install -U pip setuptools wheelpip install -U pip setuptools wheelpip install -U spacyconda install -c conda-forge spacyconda install -c conda-forge cupyconda install -c conda-forge spacy-transformersgit clone https://github.com/explosion/spaCycd spaCypip install -r requirements.txtpip install --no-build-isolation --editable .# packages only available via pippip install spacy-lookups-datapython -m spacy download ca_core_news_smpython -m spacy download zh_core_web_smpython -m spacy download hr_core_news_smpython -m spacy download da_core_news_smpython -m spacy download nl_core_news_smpython -m spacy download en_core_web_smpython -m spacy download fi_core_news_smpython -m spacy download fr_core_news_smpython -m spacy download de_core_news_smpython -m spacy download el_core_news_smpython -m spacy download it_core_news_smpython -m spacy download ja_core_news_smpython -m spacy download ko_core_news_smpython -m spacy download lt_core_news_smpython -m spacy download mk_core_news_smpython -m spacy download xx_ent_wiki_smpython -m spacy download nb_core_news_smpython -m spacy download pl_core_news_smpython -m spacy download pt_core_news_smpython -m spacy download ro_core_news_smpython -m spacy download ru_core_news_smpython -m spacy download sl_core_news_smpython -m spacy download es_core_news_smpython -m spacy download sv_core_news_smpython -m spacy download uk_core_news_sm安装说明
spaCy兼容64位CPython 3.7+,可在Unix/Linux、 macOS/OS X和Windows系统上运行。最新版spaCy可通过 pip和 conda获取。
pip
使用pip安装时,spaCy发布版本提供源码包和二进制wheel包。
在安装spaCy及其依赖项之前,请确保您的pip、
setuptools和wheel都是最新版本。
使用pip时,通常建议在虚拟环境中安装软件包,以避免修改系统状态:
spaCy还允许您通过在括号中指定以下关键词来安装额外依赖项,例如spacy[ja]或spacy[lookups,transformers](多个额外项用逗号分隔)。有关包含内容的详细信息,请参阅spaCy的setup.cfg中的[options.extras_require]部分。
| 名称 | 描述 |
|---|---|
lookups | Install spacy-lookups-data for data tables for lemmatization and lexeme normalization. The data is serialized with trained pipelines, so you only need this package if you want to train your own models. |
transformers | Install spacy-transformers. The package will be installed automatically when you install a transformer-based pipeline. |
cuda, … | Install spaCy with GPU support provided by CuPy for your given CUDA version. See the GPU installation instructions for details and options. |
apple | Install thinc-apple-ops to improve performance on an Apple M1. |
ja, ko, th | Install additional dependencies required for tokenization for the languages. |
conda
感谢我们优秀的社区,我们得以重新添加conda支持。您也可以通过conda-forge安装spaCy:
如需获取包含构建配方和配置的原料,请查看 此代码库。请注意,我们 目前未在conda上发布任何预发布版本。
升级spaCy
当升级到新版本的spaCy时,通常建议从一个干净的虚拟环境开始。如果您正在升级到新的主版本,请确保安装了最新的兼容训练管道,并且环境中没有遗留旧版本或不兼容的包,因为这经常会导致意外结果和错误。如果您训练了自己的模型,请记住训练和运行时输入必须匹配。这意味着您需要使用新版本重新训练管道。
spaCy 还提供了一个 validate 命令,可让您验证所有已安装的管道包是否与您的 spaCy 版本兼容。如果发现不兼容的包,将打印提示和安装说明。建议使用 python -m 运行该命令,以确保执行的是正确版本的 spaCy。
使用GPU运行spaCy
从v2.0版本开始,spaCy配备了由我们的机器学习库Thinc实现的神经网络模型。对于GPU支持,我们非常感谢使用了Chainer的CuPy模块的工作,该模块为GPU数组提供了与numpy兼容的接口。
spaCy可以通过指定spacy[cuda]、spacy[cuda102]、spacy[cuda112]或spacy[cuda113]等安装在兼容CUDA的GPU上。如果您知道CUDA版本,使用更明确的标识符可以让CuPy通过wheel安装,节省一些编译时间。这些标识符应该会安装cupy。
在完成支持GPU的安装后,激活GPU的最佳方式是在脚本中加载任何处理管道之前调用spacy.prefer_gpu或spacy.require_gpu()。require_gpu会在没有可用GPU时抛出错误。
从源代码编译
另一种安装spaCy的方法是克隆其 GitHub仓库并从源码构建。如果您想修改代码库,这是常用的方式。 您需要确保拥有一个开发环境,包括带有头文件的Python发行版、编译器、 pip和git已安装。 最复杂的部分是编译器配置,具体操作取决于您的系统。详情请参阅 Ubuntu、macOS / OS X和 Windows的相关说明。
安装附加组件:
如何安装编译器及相关构建工具:
- Ubuntu: 通过
apt-get安装系统级依赖项:sudo apt-get install build-essential python-dev git - macOS / OS X: 安装最新版本的XCode,包括所谓的"命令行工具"。macOS和OS X系统已预装Python和Git。
- Windows: 安装与您Python解释器编译版本相匹配的Visual C++ Build Tools或Visual Studio Express版本。
从源代码编译时使用构建约束
如果从源代码安装spaCy,或在PyPI上没有二进制轮子的平台上使用pip安装,当环境中任何包需要旧版本的numpy时,可能需要使用构建约束。
如果在编译spacy后,numpy从最新版本被降级,您可能会看到如下错误:
要解决这个问题,可以创建一个新的虚拟环境并使用构建约束安装spacy及其所有依赖项。
Build constraints
指定一个较旧版本的numpy,该版本仅在编译spacy时使用,
这样您的运行时环境就可以使用任何较新版本的numpy并保持兼容性。此外,使用--no-cache-dir来忽略任何先前缓存的
wheel文件,以便所有相关包都能从头开始重新编译:
我们当前的构建约束指定了PyPI上针对x86_64和aarch64架构支持的最旧numpy版本。根据您的平台和环境,您可能需要自定义numpy的具体版本。对于其他平台,您可以参考SciPy的oldest-supported-numpy包来查看推荐的numpy最旧版本。
(警告: 不要使用 pip install -c constraints.txt 替代
PIP_CONSTRAINT,因为这不会应用到隔离的构建环境中。)
开发者附加选项
对于经常编辑源代码并重新编译的spaCy开发者来说,一些额外的选项可能会很有用。
-
以可编辑模式安装。对
.py文件的修改会在保存后立即生效,但对Cython文件(.pxd,.pyx)的编辑需要重新运行下面的pip install命令。在以可编辑模式安装前,请确保已通过pip uninstall spacy移除所有先前安装的版本,可能需要多次运行该命令才能完全清除早期安装的所有痕迹。 -
并行构建。从v3.4.0版本开始,您可以通过环境变量
SPACY_NUM_BUILD_JOBS指定构建任务的数量: -
对于可编辑模式和并行构建,使用
python setup.py而非pip(不再推荐):
Visual Studio Code 扩展

spaCy VSCode扩展为处理spaCy的配置文件提供了额外的工具和功能。1.0.0版本包含了可安装扩展中配置文件的注册函数、变量和区块名称的悬停描述。
- 在您的系统上安装一个受支持的Python版本 (
>=3.7) - 安装 Python Extension for Visual Studio Code
- 创建一个 Python虚拟环境
- 安装所有Python依赖项 (
spaCy >= 3.4.0&pygls >= 1.0.0) - 安装 spaCy extension for Visual Studio Code
- 选择您的Python环境
- 您已准备好使用spaCy中的
.cfg文件了!
构建可执行文件
spaCy代码库包含一个Makefile文件,它使用pex(Python可执行文件)构建可执行的zip文件。该可执行文件包含spaCy及其所有包依赖项,运行时仅需系统Python环境。构建.pex可执行文件通常是部署spaCy最便捷的方式,因为它允许你将构建过程与部署过程分离。
您可以通过以下环境变量来配置构建过程:
| 变量 | 描述 |
|---|---|
SPACY_EXTRAS | Additional Python packages to install alongside spaCy with optional version specifications. Should be a string that can be passed to pip install. See Makefile for defaults. |
PYVER | The Python version to build against. This version needs to be available on your build and runtime machines. Defaults to 3.8. |
WHEELHOUSE | Directory to store the wheel files during compilation. Defaults to ./wheelhouse. |
运行测试
spaCy附带一个全面的测试套件。要运行测试,通常需要克隆代码仓库并从源码构建spaCy。这也会安装requirements.txt中定义的所需开发依赖项和测试工具。
或者,您可以查找spaCy的安装位置并在该目录下运行pytest。别忘了通过spaCy的requirements.txt安装测试工具:
在spaCy目录下调用pytest将仅运行基础测试。标志--slow是可选的,启用该标志将运行耗时更长的额外测试。
故障排除指南
本节收集了您在安装、加载和使用spaCy时可能遇到的一些最常见错误及其解决方案。另请参阅Discussions FAQ Thread,该页面更新更频繁,涵盖更多临时性问题。
此错误意味着系统或环境中找不到spaCy模块。请确保已安装spaCy。如果使用虚拟环境,请确认该环境已激活并检查其中是否安装了spaCy - 否则您将尝试加载系统安装版本。您也可以运行which python来查找Python可执行文件的位置。
从spaCy v1.7版本开始,所有训练好的管道都可以作为Python包安装。
这意味着它们将成为应用程序中可导入的模块。如果导入失败,
通常表明当前环境中未安装该包。运行pip list或pip freeze命令检查已安装的管道包,
必要时安装正确的包。如果在文件开头手动导入包,
请确保使用包的完整名称。
当从命令行运行spacy命令时可能会出现此错误。
spaCy目前不会向您的PATH环境变量添加条目,
因为这可能导致意外结果,特别是在使用虚拟环境时。
相反,spaCy添加了一个自动别名,将spacy映射到
python -m spacy。如果这没有按预期工作,请自行使用
python -m运行命令 - 例如python -m spacy download en_core_web_sm。
有关此问题的更多信息,请参阅download命令。
虽然从技术上讲这可能有多种原因,包括spaCy本身损坏,但最可能的情况是你的脚本文件名或目录名"遮蔽"了模块——例如你的文件名为spacy.py,或者你导入的目录名为spacy。因此,在使用spaCy时,切勿将其他任何东西命名为spacy。
如果你的训练数据仅包含新实体,而没有混入模型先前识别的任何示例,可能会导致模型"遗忘"之前学习的内容。这被称为"灾难性遗忘问题"。解决方案是对部分文本进行预标注,并将其与新文本混合在更新中。你也可以通过使用spaCy处理一些文本来实现,提取模型先前正确识别的一批实体,并将它们添加到训练示例中。
如果你在训练模型并将它们写入磁盘,同时使用git进行版本控制,在Windows环境中尝试加载这些模型时可能会遇到此错误。这是因为Windows版Git的默认安装配置会在文件检出时自动将Unix风格的换行符(LF)转换为Windows风格(CRLF)(在提交时则反向转换)。虽然这对文本文件基本没问题,但写入磁盘的训练模型包含一些不应进行此类转换的二进制文件。当这些文件被转换时,就会出现上述错误。你可以通过以下两种方式修复:将core.autocrlf设置改为"false",或者在代码库中提交.gitattributes文件,通过类似path/to/spacy/model/** -text的条目来告诉Git哪些文件或文件夹不应执行LF到CRLF的转换。完成其中任一操作后,请重新克隆你的代码库。