来自 macports stdin 问题的 python2.7

来自 macports stdin 问题的 python2.7

我的 macports python2.7 似乎以奇怪的方式与 osx 终端混淆。这就是我的意思。

键盘的确切输入是:

/opt/local/bin/python2.7<ENTER>
a = 3<ENTER>
a<ENTER>
<CTRL+D>
/opt/local/bin/python2.7<ENTER>
a = 3<ENTER>
a<ENTER>
<CTRL+D><ENTER>
exit()<ENTER>
<ENTER>
ls

以下是我在终端窗口中看到的内容:

Artems-MacBook-Pro-2 /Users/artem $ /opt/local/bin/python2.7
Python 2.7.10 (default, Aug 31 2015, 01:42:42) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 3
>>> a
>>> 3
a
>>> 3
^D>>> 
Artems-MacBook-Pro-2 /Users/artem $ Python 2.7.10 (default, Aug 31 2015, 01:42:42) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 3
>>> a
>>> 3
a
>>> 3
^D
>>> exit()
>>> Artems-MacBook-Pro-2 /Users/artem $ 
Artems-MacBook-Pro-2 /Users/artem $ ls

如您所见,当我第一次尝试打印“a”的值时,发生了第一件奇怪的事情,即我得到

>>> a
>>> 3
<cursor here>

代替

>>> a
3
>>> <cursor here>

然后,第一次退出 python 后,终端中没有显示任何输入,即我得到:

Artems-MacBook-Pro-2 /Users/artem $ Python 2.7.10 (default, Aug 31 2015, 01:42:42)

代替

Artems-MacBook-Pro-2 /Users/artem $ /opt/local/bin/python2.7
Python 2.7.10 (default, Aug 31 2015, 01:42:42)

第二个 python 会话继续表现异常 + CTRL+D 组合键停止工作。退出第二个会话后,终端中的输入再次正常显示。

有谁知道为什么会发生这种情况以及如何解决它?

PS OSX 默认的 Python 没有这个问题,但我真的想让 macports 版本能够工作

答案1

我通过在我的系统上切换到不同的python来修复这个问题:

$ sudo port select python python27-apple

答案2

遇到了同样的问题——真的很烦人!阅读后http://bugs.python.org/issue24961,决定尝试跑步

sudo port install py27-readline

...它解决了问题,至少在我的计算机上是这样。也许有人应该向 MacPorts 提交一张票...

答案3

matplotlib我在今年 8 月 29 日安装后也遇到了同样的问题。这让我很抓狂,所以我卸载了它:

sudo port uninstall --follow-dependents python27 @2.7.10_3+universal

我认为这个特定macports版本的 Python 已经损坏了。

答案4

我已经确定该问题源于 ncurses。我还没有修复。我有一个使用 ncurses @5.9_2 和 ncurses @6.0_0 编译的软件,目前它非常糟糕。

相关内容