Запуск Python внутри Emacs в Windows

Я только что установил Python 2.7 в Windows вместе с IPython.

Я привык запускать IPython из Emacs в Linux, например.

M-x shell

Затем введите «ipython» в командной строке.

Это прекрасно работает в Linux, но в Windows зависает после печати текста баннера IPython, т. е. выглядит так, как будто он работает, но затем вы никогда не получаете приглашение IPython.

Я могу загрузить IPython (и Python) под Windows без проблем со стандартного терминала cmd, но не из Emacs.

Кто-нибудь еще сталкивался или, надеюсь, решил эту проблему?

У меня возникает та же проблема при попытке запустить старый добрый Python.


person bph    schedule 09.10.2012    source источник
comment
Godspeed Hiett — emacs и Windows.   -  person Burhan Khalid    schedule 09.10.2012
comment
честный комментарий - я переношу некоторое программное обеспечение в Windows и пытаюсь сделать свой процесс разработки как можно более идентичным (простым?), например. emacs и mingw, работающие на виртуальном боксе Windows из общего ресурса samba. Я написал структуру системного тестирования на python и хочу запустить то же тестирование черного ящика в Windows, что и в Linux, поэтому этот вопрос   -  person bph    schedule 09.10.2012
comment
Есть ли особая причина, по которой вы не используете run-python? Кажется, он работает из коробки в Windows с emacs 24.2 (я думаю, вам нужно будет M-x customize-variable python-command, если вы хотите использовать ipython вместо значения по умолчанию).   -  person Inaimathi    schedule 09.10.2012
comment
@Inaimathi: у меня есть emacs 24.3.1 на Windows. run-python возвращает Поиск программы: разрешение отклонено, ноль. У меня не определено python-command.   -  person user443854    schedule 02.10.2013


Ответы (3)


В Windows это не будет работать так просто, и это очень раздражает. Во-первых, убедитесь, что вы установили pyreadline.

Затем я заставил его работать с файлом bat, который находится в моем системном пути, содержащем:

[ipython.bat]
@python.exe -i C:\devel\Python\2.7-bin\Scripts\ipython.py  --pylab %*

Затем получите python-mode.el и удалите ipython.el. Последний устарел, и python-mode включает его функциональность.

Соответственно измените путь к файлу ipython.py и сохраните его. Теперь в вашем Emacs сделайте следующее в вашем файле init.el.

(custom-set-variables
 '(py-shell-name "ipython.bat"))

В качестве альтернативы, чтобы выполнить последний шаг, выполните C-h v ‹RET> py-shell-name и настройте его и измените его на ipython.bat или полный путь к вашему ipython.bat, если каталог scripts не находится в вашем системном пути. Сохраните для будущих сеансов.

Это должно заставить вашу оболочку IPython работать. Есть еще одно предостережение, если вы хотите использовать несколько интерактивных фигурок matplotlib без зависания консоли IPython. Единственный способ обойти эту проблему — использовать IPython 0.10 вместо текущей версии.

person octi    schedule 14.01.2013

Хотел бы я увидеть этот пост некоторое время назад. Мой опыт работы с python, ipython из Emacs следующий:

Я пробовал несколько вариантов (используя python(x,y)-2.7.3.0 в Windows 7)

Использование ipython.el:

Он по-прежнему работает, если вы измените команду ipython. Я не рекомендую этого, так как вы теряете некоторые функции из ipython.el, изменяя ipython-command

Вы можете показывать цифры, но подсказка зависает, пока вы не закроете фигуру

Голый питон не работает

Изменение имени py-shell (как указано выше): мои фигуры всегда зависают, когда я добавляю параметр --pylab

Я всегда получаю терминал IPython

Представляем ipython.bat, содержащий

@C:\\Python27\\python.exe -i -u C:\\Python27\\Scripts\\ipython-script.py %*

и изменение пути таким образом, что ipython.bat я нашел до ipython.exe

IPython работает, но по-прежнему только один поток (вы должны закрыть рисунок, чтобы вернуться в оболочку)

Python тоже работает и все остальные функции из python-mode.el

Мне все еще нужно выяснить, как вернуть оболочку после открытия фигуры (в emacs). Я начал работать, используя Python 2.6 и более раннюю версию IPython.

person Jens Munk    schedule 15.05.2013

Использование python -i или ipython -i вместо python или ipython сработало для меня (это дает мне приглашение в Emacs вместо того, чтобы зависать на неопределенный срок).

Из питона --help :

-i : интерактивная проверка после запуска скрипта; вызывает подсказку, даже если стандартный ввод не является терминалом; также PYTHONINSPECT=x


Однако полученный интерпретатор Python, вероятно, не будет полностью функциональным. У вас есть 2 варианта:

  • если вы используете python из среды conda: я советую вам переключиться на правильную установку Python. Это не означает удаление Anaconda, это означает только загрузку Python с https://www.python.org/downloads/windows/ и удалить Python Anaconda из переменной %PATH% Windows. Если вы этого не сделаете, вы столкнетесь со многими проблемами с отображением картинок, с активацией conda (conda активировать базу) и т. д. и т. д., и мне так и не удалось решить их все.
  • если вы используете Python с python.org/downloads: вы на правильном пути! Убедитесь, что Python доступен из командной строки (Win+R cmd python), и если нет, добавьте его путь в переменную пути Windows.

Теперь вам нужно заставить работать отображение изображения. По умолчанию matplotlib.pyplot отстает в Emacs. Вот что вам нужно сделать:

Во-первых, убедитесь, что вы загрузили пакет ipython (pip install ipython) вместе с matplotlib и numpy (если вы их используете, а кто нет: pip install matplotlib, pip install numpy).

Затем найдите местоположение ipython-script.py на своем компьютере (введите «ipython-script.py» в проводнике, чтобы найти его) и поместите его в качестве аргумента в переменную python-shell-interpreter-args после « -я". Также убедитесь, что для интерпретатора python-shell-interpreter установлено значение python. У вас должно получиться что-то вроде этого:

(setq python-shell-interpreter "python")
(setq python-shell-interpreter-args "-i c:/Users/YOUR-USER-NAME/AppData/Local/Continuum/anaconda3/Scripts/ipython-script.py") 

Таким образом, вы можете запустить оболочку python непосредственно из emacs с помощью M-x run-python (или из файла python C-c C-p, а затем C-c C-c).

Конечно, вы можете сделать то же самое и из терминала оболочки, если хотите, с помощью команды: python -i "c:/Users/YOUR-USER-NAME/AppData/Local/Continuum/anaconda3/Scripts/ipython-script.py"

или вы можете создать bat-файл с помощью той же команды. Но это не обязательно.

(Протестировано с Python 3.8)

person kotchwane    schedule 15.10.2019