【问题标题】:Package spacy model包装空间模型
【发布时间】:2020-01-06 11:10:23
【问题描述】:

我想在 python 包中包含 spacy 模型 de_core_news_sm。

这是我的项目:https://github.com/michaelhochleitner/package_de_core_news_sm

我使用以下命令打包并安装项目。

python setup.py sdist bdist_wheel
pip install dist/example-pkg-mh-0.0.1.tar.gz

我想导入模块 example_pkg.import-model.py 。

$ python
>>> import example_pkg.import_model
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/mh/PycharmProjects/packaging_tutorial/example_pkg/import_model.py", line 2, in <module>
    import de_core_news_sm
ModuleNotFoundError: No module named 'de_core_news_sm'

如何将模块“de_core_news_sm”包含到包中,以便在运行以下命令后安装它?

pip install dist/example-pkg-mh-0.0.1.tar.gz

【问题讨论】:

    标签: python spacy python-packaging


    【解决方案1】:

    如果您不想让您的用户运行该下载,则必须使用您自己的源代码打包和分发它。这个过程称为 vendoring(请参阅 this great post 以获得关于如何在 python 中最好地做到这一点的深入解释,或 pip-project 的 _vendor/__init__.py 以获得注释示例),它可能非常方便,但容易得到如果做得过火,你会遇到烦人的问题。

    简单地说,您在包的源代码目录中创建一个名为_vendor(或类似名称)的额外python包,并将下载的de_core_news_sm包复制到其中:

    example_pkg
    ├── import_model.py
    ├── __init__.py
    └── _vendor
        ├── __init__.py
        └── de_core_news_sm
            ├── de_core_news_sm-2.1.0
            │   ├── accuracy.json
            │   ├── meta.json
            │   ├── ner/
            │   ├── parser/
            │   ├── tagger/
            │   ├── vocab/
            │   └── tokenizer
            ├── __init__.py
            └── meta.json
    

    你可以在你使用python -m spacy download de_core_news_sm安装它的python解释器的site_packages中找到这个包,即$(which python)/site_packages/de_core_news_sm

    最后,您需要将模型的所有导入从import de_core_news_sm 更改为from example_pkg._vendor import de_core_news_sm,然后它应该可以工作了。

    【讨论】:

      【解决方案2】:

      您是否在命令行上尝试过:

      python -m spacy download de_core_news_sm
      

      【讨论】:

      • 是的。我想让包的用户手动执行此操作。
      猜你喜欢
      • 2019-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 2015-05-21
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多