curses をサポートする Python をコンパイルしてインストールする試みは失敗し、コンパイル フラグなどでさまざまな反復を試みましたが、これを機能させることができないようです。
これは、Solaris 11、Python バージョン 3.4.3 上にあります。
まず、問題は次のとおりです。
Python 3.4.3 (default, Mar 3 2015, 14:43:41)
[GCC 4.5.2] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>> import curses
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/pkg/python/3.4.3/lib/python3.4/curses/__init__.py", line 13, in <module>
from _curses import *
ImportError: No module named '_curses'
さまざまな Googlez が、これは Python がコンパイルされたときに ncurses ライブラリが見つからなかったことが原因であると私に言いました。
そこで、ftp: //ftp.gnu.org/gnu/ncurses/ (5.9) から /usr/local/pkg/ncurses/5.9 にcurses をインストールし、ncurses の場所を渡して Python を再コンパイルしようとしました。
export LDFLAGS=-L/usr/local/pkg/ncurses/5.9/lib
export CPPFLAGS="-I/usr/local/pkg/ncurses/5.9/include -I/usr/local/pkg/ncurses/5.9/include/ncurses"
./configure --enable-shared --prefix=/usr/local/pkg/python/3.4.3
make
make install
これはそれを行う必要があるようです。config.log は失敗を示していないようです。
checking curses.h usability... yes
checking curses.h presence... yes
checking for curses.h... yes
checking ncurses.h usability... yes
checking ncurses.h presence... yes
checking for ncurses.h... yes
また、Solaris パッケージ ツール OpenCSW を使用してこれらのパッケージをインストールしようとしました。
libncurses5 CSWlibncurses5 5.9,REV=2011.11.21 298.2 KB
libncurses_dev CSWlibncurses-dev 5.9,REV=2011.11.21 258.4 KB
libncursesw5 CSWlibncursesw5 5.9,REV=2011.11.21 341.5 KB
mutt_ncurses CSWmutt-ncurses 1.5.23,REV=2014.03.14 484.4 KB
ncurses CSWncurses 5.9,REV=2011.11.21 123.1 KB
そして、私は試しました:
export LDFLAGS=-L/opt/csw/lib
export CPPFLAGS="-I/opt/csw/include -I/opt/csw/include/ncursesw"
./configure --enable-shared --prefix=/usr/local/pkg/python/3.4.3
make
make install
どちらの場合も、同じ状況:
ImportError: No module named '_curses'
編集の更新:
「make」ではなく「make install」中にcursesモジュールがビルドされることに気付いたので、いくつかの重大なエラーを見逃していました。具体的には、ncurses の /usr/local/pkg インストールを使用する場合:
building '_curses' extension
gcc -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -I./Include -I. -IInclude -I/usr/local/pkg/ncurses/5.9/include -I/usr/local/pkg/ncurses/5.9/include/ncurses -I/usr/local/include -I/tmp/Python-3.4.3/Include -I/tmp/Python-3.4.3 -c /tmp/Python-3.4.3/Modules/_cursesmodule.c -o build/temp.solaris-2.11-i86pc.32bit-3.4/tmp/Python-3.4.3/Modules/_cursesmodule.o
gcc -shared -L/usr/local/pkg/ncurses/5.9/lib -L/usr/local/pkg/ncurses/5.9/lib -L/usr/local/pkg/ncurses/5.9/lib -I/usr/local/pkg/ncurses/5.9/include -I/usr/local/pkg/ncurses/5.9/include/ncurses build/temp.solaris-2.11-i86pc.32bit-3.4/tmp/Python-3.4.3/Modules/_cursesmodule.o -L. -L/usr/local/pkg/python/3.4.3/lib -L/usr/local/pkg/ncurses/5.9/lib -L/usr/local/lib -lncurses -lpython3.4m -o build/lib.solaris-2.11-i86pc.32bit-3.4/_curses.so
Text relocation remains referenced
against symbol offset in file
.rodata (section) 0x50 /usr/local/pkg/ncurses/5.9/lib/libncurses.a(lib_color.o)
... (followed by hundreds more lines like the above)
ld: fatal: relocations remain against allocatable but non-writable sections
collect2: ld returned 1 exit status
Failed to build these modules:
_curses _curses_panel readline
特に ncurses の OpenCSW インストールを使用する場合:
building '_curses' extension
gcc -fPIC -Wno-unused-result -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -Werror=declaration-after-statement -DHAVE_NCURSESW=1 -I/usr/include/ncursesw -I./Include -I. -IInclude -I/opt/csw/include -I/opt/csw/include/ncursesw -I/usr/local/include -I/tmp/Python-3.4.3/Include -I/tmp/Python-3.4.3 -c /tmp/Python-3.4.3/Modules/_cursesmodule.c -o build/temp.solaris-2.11-i86pc.32bit-3.4/tmp/Python-3.4.3/Modules/_cursesmodule.o
/tmp/Python-3.4.3/Modules/_cursesmodule.c:281:29: error: expected declaration specifiers or ‘...’ before ‘cchar_t’
/tmp/Python-3.4.3/Modules/_cursesmodule.c: In function ‘PyCurses_ConvertToCchar_t’:
/tmp/Python-3.4.3/Modules/_cursesmodule.c:299:16: error: ‘wch’ undeclared (first use in this function)
/tmp/Python-3.4.3/Modules/_cursesmodule.c:299:16: note: each undeclared identifier is reported only once for each function it appears in
/tmp/Python-3.4.3/Modules/_cursesmodule.c: In function ‘curses_window_addch_impl’:
(...and many more messages like this)
Failed to build these modules:
_curses _curses_panel readline