我是新手,但我試圖通過一本非常棒的劇本在python終端中運行一些命令。具體來說,我想下載一個語料庫。通過直觀的劇本在python終端中運行命令
$python
>import nltk
>nltk.download
> ~ d (download)
> ~ book
> ~ q (quit)
>quit()
目前,我的劇本文件創建通過requirements.txt
安裝NLTK的virtualenv中,但我不知道怎麼去具體NLTK功能,而無需手動下載。
我在我的搜索中跑過這條線,python -m nltk.downloader all
它滿足我的程序,但它是一個很多不必要的東西下載,佔用內存。然而,在此期間,我曾嘗試它運行:
- name: Get the nltk corpus
shell: "python -m nltk.downloader all"
但這犯錯與消息:
TASK [Get the nltk corpus]*****************************************************
fatal: [127.0.0.1]: FAILED! => {"changed": true, "cmd": "python -m nltk.downloader book", "delta": "0:00:00.016227", "end": "2016-12-29 20:06:09.156953", "failed": true, "rc": 1, "start": "2016-12-29 20:06:09.140726", "stderr": "/usr/bin/python: No module named nltk", "stdout": "", "stdout_lines": [], "warnings": []}
是否有關於如何使無論是上面的代碼工作的任何建議或另一種方法來達到我的目標,通過可靠的方式獲得特定的nltk功能?
UPDATE:
只是爲了更清楚一點,我想運行一個命令,將在Python殼正常工作在ansible劇本賣出之外。
例如,行nltk.download("book")
完全按照我需要它在Python終端內部工作。但是我需要運行這個程序,而無需手動輸入終端並通過完整的劇本中的任務。
我試過類似的東西,雖然它編譯,它並沒有真正下載書本語料庫,因爲我需要它。
- name: Get the "book" nltk corpus
shell: "/usr/local/venv/bin/python -m nltk.downloader book"
這是一個奇妙的建議,我會嘗試,但在我可以修改該聲明之前,我需要能夠使其運行。在ansible playbook中的代碼不能編譯。 (我已經編輯並添加了上面的錯誤信息) –
如果你將pip包安裝到virtualenv中,不要忘記'chdir'(這裏有一個'shell'模塊的參數),並且運行本地python解釋器而不是默認python 。 –
工作!我必須運行到virtualenv明確存在的python路徑'/ path/in/venv/to/** python ** -m nltk.downloader book' 非常感謝! –