2013-03-11 133 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())