在Windows上的Emacs中运行Python

时间:2012-10-09 09:49:43

标签: python shell emacs ipython

我刚刚在Windows上安装了Python 2.7和IPython。

我习惯在Linux上的Emacs中运行IPython,例如

M-x shell

然后在提示符下输入“ipython”。

这在Linux下工作正常,但在Windows下它会在打印IPython横幅文本后挂起,即看起来它正在工作,但是你永远不会得到IPython提示。

我可以在Windows下加载IPython(和Python),没有问题来自标准的cmd终端,而不是来自Emacs。

其他人是否经历过或希望解决这个问题?

我在尝试启动普通的旧Python时遇到了同样的问题。

3 个答案:

答案 0 :(得分:2)

在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 shell工作。如果您想要多个交互式matplotlib数字而不挂起您的IPython控制台,还有一个警告。解决这个问题的唯一方法是使用IPython 0.10而不是当前版本。

答案 1 :(得分:1)

我希望我刚才看过这篇文章。我在Emacs中运行python,ipython的经验如下:

我尝试了很多选项(在Windows 7上使用python(x,y)-2.7.3.0)

使用ipython.el:

如果您更改ipython-command,它仍然有效。我不建议这样做,因为你通过更改ipython-command

从ipython.el中删除了一些功能

您可以显示数字,但提示会冻结,直到您关闭数字

裸露的python不起作用

更改py-shell-name(如上所示): 当我添加--pylab选项

时,我的数字总是悬空

我总是得到一个IPython终端

介绍包含

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

并更改路径,以便在ipython.exe之前找到ipython.bat

IPython有效,但仍然只有一个线程(你必须关闭数字才能返回shell)

Python也可以工作,所有剩下的函数都来自python-mode.el

我仍然需要弄清楚如何在打开图形后(在emacs内)返回shell。我开始使用Python 2.6和旧版本的IPython

答案 2 :(得分:1)

使用python -iipython -i而不是pythonipython对我有用(它使我在Emacs中得到提示,而不是无限期地挂起)。

从python --help开始:

  

-i:运行脚本后进行交互检查;强制提示甚至            如果stdin似乎不是终端;也PYTHONINSPECT = x


但是,生成的python解释器可能无法完全发挥作用。您有2个选择:

  • 如果您是在conda环境中使用python,我建议您切换到正确的Python安装。这并不意味着删除Anaconda,仅意味着从https://www.python.org/downloads/windows/下载Python,并从Windows的%PATH%变量中删除Anaconda的Python。如果不这样做,您将在图片显示,conda(conda激活库)激活等方面遇到很多问题,而我却没有成功解决所有问题。
  • 如果您使用的是python.org/downloads中的Python:您的方向正确!检查是否可以从命令行(Win + R cmd python)访问Python,如果没有,请将其路径添加到Windows路径变量。

现在,您需要使图像显示正常工作。开箱即用,matplotlib.pyplot在Emacs中落后。这是您需要做的:

首先,检查是否已下载ipython软件包(pip install ipython)以及matplotlib和numpy(如果使用它们,但没有使用pip install matplotlibpip install numpy)。

然后在计算机上找到ipython-script.py的位置(在文件资源管理器中键入“ ipython-script.py”以找到它),并将其作为参数放入变量python-shell-interpreter-args中,在“ -i”之后。还要检查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") 

这样,您可以直接使用M-x run-python从emacs运行python shell(或者从python文件中依次运行C-c C-p和C-c C-c)。

当然,如果愿意,您也可以从Shell终端执行以下命令: python -i "c:/Users/YOUR-USER-NAME/AppData/Local/Continuum/anaconda3/Scripts/ipython-script.py"

或者您可以使用相同的命令创建一个bat文件。但这不是必需的。

(已通过Python 3.8测试)