Python打包分发后安装步骤

3
我正在打包一个使用nltk的项目。当你使用pip安装nltk时,你会获得核心功能,但不是所有附带的模块。要获取这些模块,你需要调用nltk的下载方法。
我尝试了以下方法,但它不起作用,显示“ImportError: No module named nltk”。我认为这是因为在调用setup(...)之前出现import nltk。
是否有一种干净的方法,可以在distribute的安装后执行以下其中之一?
$ python -m nltk.downloader punkt
>>> import nltk; nltk.download('punkt')

这是我失败的setup.py尝试:

class my_install(install):
    def run(self):
        install.run(self)
        import nltk
        nltk.download('punkt')

setup(
    ...
    install_requires = [..., 'nltk==2.0.4'],
    cmdclass={'install': my_install},
)
2个回答

0

我使用了命令行安装方法,并且成功了。 像这样...

import subprocess

class my_install(install):
    def run(self):
        install.run(self)
        cmd = ["python", "-m", "nltk.downloader", "punkt"]
        with subprocess.Popen(cmd, stdout=subprocess.PIPE) as proc:
            print(proc.stdout.read())

0

pip 无法处理依赖关系,因此您需要编写一个 README 文件并解释给用户他们需要安装什么,或者编写一个脚本,在所有需要的东西上运行 pip install。

我认为这第二种方法是可行的,同时还需要一个 README 文件来解释正在发生的事情。

作为 Debian 维护者,我可以告诉您,在那里执行下载操作的安装命令被认为是不可接受的,必须将其打包列出其他软件包的依赖项,然后在满足依赖项的情况下安装您的软件包,我认为这是一种合理的做法。http://wiki.debian.org/UpstreamGuide#No_Downloads


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接