2013-03-11 139 views
2

我打包使用nltk的项目。当您使用pip安装nltk时,您会获得核心功能,但不是所有随附的模块。要获得这些模块,请致电nltk的下载方法。Python包装分发后安装步骤

我试过以下,但它不起作用,说ImportError: No module named nltk。我认为这是因为在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}, 
) 

回答

0

PIP不处理的依赖关系,所以你需要编写一个README文件,并解释你的用户提供他们所需要的安装,或脚本在你需要的所有东西上运行pip安装。

第二种方法是我想的方法,以及解释发生了什么的README文件。

作为一名debian维护者,我可以告诉你,做一个安装命令,下载东西在那里被认为是不可接受的,必须打包列出依赖到其他软件包,然后安装你的依存关系,我认为这是一个理智的方式来进行一般。 http://wiki.debian.org/UpstreamGuide#No_Downloads

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())