Установка зависимостей данных nltk в скрипт setup.py

Я использую NLTK с wordnet в своем проекте. Я выполнил установку вручную на свой компьютер с помощью pip: pip3 install nltk --user в терминале, затем nltk.download() в оболочке python для загрузки wordnet.

Я хочу автоматизировать их с помощью setup.py файла, но я не знаю, как установить Wordnet.

На данный момент у меня есть этот фрагмент кода после вызова setup ("nltk" находится в списке install_requires вызова setup):

import sys
if 'install' in sys.argv:
    import nltk
    nltk.download("wordnet")

Есть лучший способ сделать это?


person Tom Cornebize    schedule 07.11.2014    source источник
comment
@ martin-thoma на первый взгляд, похоже, что зависимости nltk data могут быть упакованы как проекты Python и распространены на PyPI без особых усилий. Все это можно относительно легко написать сценарием и делегировать системе CI / CD. Вы должны взвесить эти тикеты: github.com/nltk/nltk_data/issues/12 github.com/nltk/nltk/issues/2228   -  person sinoroc    schedule 12.10.2019
comment
@ martin-thoma также, вот довольно похожий пост, который я написал о той же проблеме с пространством: stackoverflow.com/questions/57773454/package-spacy-model/ применимо ли это и к вашей ситуации?   -  person Arne    schedule 14.10.2019


Ответы (2)


Мне удалось установить данные NLTK в setup.py, заменив cmdclass моим собственным Install классом:

from setuptools import setup, find_packages
from setuptools.command.install import install as _install


class Install(_install):
    def run(self):
        _install.do_egg_install(self)
        import nltk
        nltk.download("popular")

setup(...
    cmdclass={'install': Install},
    ...
    install_requires=[
      'nltk',
      ],
    setup_requires=['nltk']
    ...
   )

Важно использовать метод do_egg_install() в вашем методе run(), чтобы убедиться, что nltk установлен до вызова import nltk (см. Также здесь python setuptools install_requires игнорируется при переопределении cmdclass). Также не забудьте добавить nltk к setup_requires.

person asmaier    schedule 14.04.2015

Вы также можете автоматизировать установку с помощью сценария оболочки, например, run (после установки nltk с помощью pip):

python -m nltk.downloader -d /usr/share/nltk_data wordnet
person transcranial    schedule 30.11.2014