我正在尝试在诅咒应用程序中显示许多Unicode文本。我的开发机是MacOSX 10.6,我使用默认的Python配备了Apple。

Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin

当我将Unicode文本添加到屏幕上时,屏幕都弄乱了。我试图使用Google寻求解决方案,其他人建议将_curses模块与libncursesw库链接起来,而不是libncurse库。

我检查了我的路径,在/opt/local/lib中找到(见下文)

libncurses++.a
libncurses++w.a
libncurses.5.dylib
libncurses.a
libncurses.dylib
libncursesw.5.dylib
libncursesw.a
libncursesw.dylib

如何检查我的诅咒模块链接到哪个库,以及如何链接到其他库?可以在不重新编译我的Python的情况下这样做吗?


这有点尴尬,但我想出了在我的环境中正确打印Unicode的解决方案。我认为在某个时候,我确实从Macports安装了诅咒库,忘记了我已经拥有了。

文本没有第一次显示的问题是因为我需要在Python程序中设置语言环境。我认为该语言环境设置将从我正在运行的外壳中继承,但仅添加了两行代码解决了我的问题:

import locale
locale.setlocale(locale.LC_ALL,"")

不过,很高兴知道Python外部图书馆的住所以及如何检查它们。

有帮助吗?

解决方案

检查哪个其他 .soSA .so 用途,使用 otool -L - 例如:

$ otool -L /Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_curses.so
/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/_curses.so:
    /Library/Frameworks/Python.framework/Versions/2.6/lib/libncurses.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.3.10)

这就是我在Python 2.6.4上安装OSX 10.5上的内容 - 因为您在10.6上使用了Apple自己的Python,所以您的Python是您的确切位置 _curses.so 会有所不同,只是做

$ python
>>> import _curses
>>> _curses.__file__

确切地查看哪里 _curses.so 感兴趣,然后致电 otool -L 在上面。

更换 .so 在系统安装的python上似乎对我充满了危险 - 你 可以 打破某些内容,最终必须重新安装OS,等等。为什么不安装Python下载 python.org 反而?

两者都得到 .dmg 以及最新版本2.6的来源(除非您是如此冒险,您想尝试一个候选版2.7 ;-),然后您可以安装 .dmg (它将去 /usr/local, 不是 覆盖系统python;适当地设置您的道路 .bashrc 或任何地方 /usr/local/bin 在你的路上 /usr/bin),那么,如果您的问题持续存在,您可以通过任何选项从来源重建,并替换特定的 _curses.so 在本地安装中,根本没有干扰系统目录(对我来说似乎最谨慎...)。

其他提示

用OS X 10.6运送的苹果供应Python 2.6居住在这里:

$ cd /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload
$ otool -L _curses*
_curses.so:
    /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.1)
_curses_panel.so:
    /usr/lib/libpanel.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
    /usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.0.1)

尝试修改任何内容是一个非常糟糕的主意 /System/Library 因为这可能会破坏OS X和/或通过系统更新消除。如果您需要重新链接,请从头开始构建自己的Python或从 自制, Macports, , 或者 Fink.

编辑:

看来电流 MacPorts Python 2.6安装用途 libncursesw 因此,安装它可能是最简单的解决方案:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload/
$ otool -L _curses*
_curses.so:
    /opt/local/lib/libncursesw.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
_curses_panel.so:
    /opt/local/lib/libpanelw.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /opt/local/lib/libncursesw.5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.0)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top