在 setup.py 文件中将 nltk 语料库下载为 cmdclass 无效

download nltk corpus as cmdclass in setup.py files not working

我想将 nltk 语料库的某些部分添加到 setup.py 文件中。我通过设置自定义 cmdclass 来遵循响应 here。我的安装文件如下所示。


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


class DownloadNLTK(install):
    def run(self):
        self.do_egg_install()
        import nltk
        nltk.download('wordnet')
        nltk.download('punkt')
        nltk.download('stopwords')
        nltk.download('vader_lexicon')

setup(
    install_requires=requirements,
    python_requires='>=3.7',
    cmdclass={'download_nltk': DownloadNLTK()}
)

然而,运行它,我得到这个错误:

Traceback (most recent call last):
  File "setup.py", line 15, in <module>
    'install': DownloadNLTK()}
TypeError: __init__() missing 1 required positional argument: 'dist'

我试图更好地理解需要什么,但我不得不说我在 dist 上找到的 here 的文档对我来说不是很清楚。有人可以提供解决方案吗?谢谢!

传递 class,而不是它的实例:

    cmdclass={'download_nltk': DownloadNLTK}

(没有 () 以避免实例化 class)