2016-12-29 6 views
1

Я новичок в вопросе, но я пытаюсь запустить несколько команд внутри терминала python через прослушиваемую книгу. В частности, я хочу загрузить корпус.Запустить команды в терминале python через загружаемую playbook

$python 
>import nltk 
>nltk.download 
> ~ d (download) 
> ~ book 
> ~ q (quit) 
>quit() 

В настоящее время мой файл Playbook создает virtualenv, который устанавливает NLTK через requirements.txt, но я не знаю, как получить конкретную функцию 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:

Просто чтобы быть немного понятнее, я пытаюсь выполнить команду, которая будет работать нормально в питона оболочки вне продавать в анзибль пьес.

Например, линия nltk.download("book") работает именно так, как мне нужно, внутри терминала python. Но мне нужно запустить это без ввода терминала вручную и с помощью задачи в незанятой пьесе.

Я пробовал что-то похожее на это, и хотя он компилируется, он фактически не загружает корпус книги так, как мне это нужно.

- name: Get the "book" nltk corpus 
    shell: "/usr/local/venv/bin/python -m nltk.downloader book" 

ответ

2

Documentation и source code намеков, которые вы можете загрузить отдельные модули:

Индивидуальных пакеты могут быть загружены с помощью вызова функции загрузки() с одним аргументом, давая идентификатор пакета для пакета, который должен загрузить

Если book представляет собой пакет в вашем примере (я не знаком с NLTK), попробуйте:

- name: Get the nltk corpus 
    shell: "python -m nltk.downloader book" 
+0

Это замечательное предложение, которое я попробую, но прежде чем я смогу изменить это утверждение, мне нужно, чтобы он работал. Код в незанятой пьесе не компилируется. (Я отредактировал и добавил сообщение об ошибке выше) –

+0

Если вы устанавливаете пакеты pip в virtualenv, не забудьте указать 'chdir' (есть параметр для модуля' shell') и запустить локальный интерпретатор python, а не python по умолчанию , –

+0

Это сработало! Мне пришлось запустить путь к питону, который существовал в virtualenv явно '/ path/in/venv/to/** python ** -m nltk.downloader book' Большое спасибо! –

1

Команда nltk.download() для загрузки NLTK данных: и корпусов обученных моделей для вещей, таких как POS Tagger. Чтобы использовать его, у вас уже должен быть установлен код nltk, т. Е. Вы должны иметь возможность успешно выполнить import nltk. Вы говорите, что работаете в виртуальном пространстве с модулем nltk, но в сообщении об ошибке указано иначе: /usr/bin/python: No module named nltk. Если это реальная проблема, вам сначала нужно разобраться (и/или исправить свой вопрос).

Предполагая, что вы можете запустить Python так, чтобы оператор import nltk преуспел, вы можете загрузить корпус (указанную цель) с помощью, например, nltk.import("brown") для корпуса Brown. (Конечно, это должно быть выполнено после import nltk.) Чтобы загрузить все ресурсы, упомянутые в книге NLTK, используйте nltk.import("book").

+0

Я успешно загрузил nltk и могу «импортировать nltk» в порядке. Это не проблема, о которой я говорил в этом вопросе. Вопросы заключались в том, как автоматизировать это в незаменимом скрипте. Как и в решении, будет незаменимый код. –

+0

Вы пытались запустить 'nltk.download (" brown ")' в своей сессии python? Дело в том, что если вы делаете это так, вам не нужно подавать ответы на всплывающее окно интерактивного графического интерфейса. – alexis

+0

Это отлично работает в сеансе python, но моя цель - заставить этот оператор запускать без меня, вручную открывая сеанс python и запуская его там. Я хочу, чтобы можно было открыть сеанс python и запустить его, а затем выйти из этого сеанса python. –

Смежные вопросы