包装空间模型

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


这是我的项目: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


有只小跳蛙
浏览 181回答 2
2回答

梦里花落0921

如果您想让您的用户免于运行该下载,则必须使用您自己的源打包和分发它。这个过程称为供应商(请参阅这篇很棒的帖子以深入解释如何在 python 中最好地做到这一点,或 pip-project 的_vendor/__init__.py评论示例),它可能非常方便,但容易让你烦恼如果过度,问题。_vendor简单地说,您在包的源代码目录中创建一个名为(或类似的)的附加 python 包,并将下载的de_core_news_sm包复制到其中:example_pkg├── import_model.py├── __init__.py└── _vendor&nbsp; &nbsp; ├── __init__.py&nbsp; &nbsp; └── de_core_news_sm&nbsp; &nbsp; &nbsp; &nbsp; ├── de_core_news_sm-2.1.0&nbsp; &nbsp; &nbsp; &nbsp; │&nbsp; &nbsp;├── accuracy.json&nbsp; &nbsp; &nbsp; &nbsp; │&nbsp; &nbsp;├── meta.json&nbsp; &nbsp; &nbsp; &nbsp; │&nbsp; &nbsp;├── ner/&nbsp; &nbsp; &nbsp; &nbsp; │&nbsp; &nbsp;├── parser/&nbsp; &nbsp; &nbsp; &nbsp; │&nbsp; &nbsp;├── tagger/&nbsp; &nbsp; &nbsp; &nbsp; │&nbsp; &nbsp;├── vocab/&nbsp; &nbsp; &nbsp; &nbsp; │&nbsp; &nbsp;└── tokenizer&nbsp; &nbsp; &nbsp; &nbsp; ├── __init__.py&nbsp; &nbsp; &nbsp; &nbsp; └── meta.jsonsite_packages您可以在安装它的 python 解释器中找到该包python -m spacy download de_core_news_sm,即$(which python)/site_packages/de_core_news_sm.最后,您需要将模型的所有导入从 更改import de_core_news_sm为from example_pkg._vendor import de_core_news_sm,然后它应该可以工作。

米琪卡哇伊

您是否在命令行上尝试过:python&nbsp;-m&nbsp;spacy&nbsp;download&nbsp;de_core_news_sm
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python