Python包装分发后安装步骤
问题描述:
我打包使用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},
)
答
PIP不处理的依赖关系,所以你需要编写一个README文件,并解释你的用户提供他们所需要的安装,或脚本在你需要的所有东西上运行pip安装。
第二种方法是我想的方法,以及解释发生了什么的README文件。
作为一名debian维护者,我可以告诉你,做一个安装命令,下载东西在那里被认为是不可接受的,必须打包列出依赖到其他软件包,然后安装你的依存关系,我认为这是一个理智的方式来进行一般。 http://wiki.debian.org/UpstreamGuide#No_Downloads
答
我用命令行安装方法并且成功了。 这样子......
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())