アカウント名:
パスワード:
Debian lenny(i386)のPCの上でソースからビルドしてみました。
……./configure→make allはつつがなく済んだのですが、しかる後にmake testしたらセルフテストでエラーがぼろぼろ出ましたorz。
いや、dbmとかsqliteとかtkとかgzipとかbz2のモジュールのテストがエラーになるのは分かるんですよ。# 拡張モジュールの構築に必要なパッケージを入れてないから当たり前。
test_boolみたいな基本的なテストでエラーが出てしまって途方に暮れてます。
自己レス。
テストのログを見たところ、test_boolでこけるのは"\xa0".isspace()がFalseを返すのがお気に召さないからだそうです。
でも他の処理系ではどうなのよ?と疑問に思って、Debian lenny(i386)の上で動くPython2,5とWindowsの上で動くPython 2.6.1で上記の式を評価させてみたら……両方ともFalse。何だそりゃ?
いや、それはちょっと違うんじゃないかと(^^;)Python 3.xのstrはUNICODEですから、 "\xa0".isspace() の結果は2.xとは異なるのが当然です。(Ubuntu+Python 2.6でも、 u"\xa0".isspace() はTrueが返ってきました)
u+00a0 : NO-BREAK SPACE
なので、 "\xa0".isspace() の結果はTrueでなければいけません。で、このstr.isspaceの実体は、Include/unicodeobject.hで定義されている通りCライブラリのiswspaceですので、こちらが正常に機能していないのではないかと思われます。
・test_bool原因は「configureで--with-wctype-functionsを指定した」だった模様で、外して再度ビルドしたらtest_boolをパスするようになりました。Python3でUnicode文字列がデフォルトになったという重要事項を、頭に血が上りかけて一時失念していました。
・test_unicodetest_boolと同じ原因で失敗していたようで、これもconfigureしなおして再ビルドしたらパスするようになりました。
・test_urllib「プロキシを経由せずに直接接続するホスト」が「localhost」だけなのがイクナイ(127.0.0.0/8が無い)ので失敗していたようですが、no_proxy環境変数を設定したらパスしました。# いいのかそれで?
・test_urllib2_localnetこのテストはhttp_proxy環境変数がセットされていると失敗するみたいです。http_proxy環境変数を削除して実行したらパスしました。
とりあえずこれで致命的なテスト失敗は全部つぶせたようです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
ソースからビルドしてみた (スコア:4, 参考になる)
Debian lenny(i386)のPCの上でソースからビルドしてみました。
……./configure→make allはつつがなく済んだのですが、しかる後にmake testしたらセルフテストでエラーがぼろぼろ出ましたorz。
いや、dbmとかsqliteとかtkとかgzipとかbz2のモジュールのテストがエラーになるのは分かるんですよ。
# 拡張モジュールの構築に必要なパッケージを入れてないから当たり前。
test_boolみたいな基本的なテストでエラーが出てしまって途方に暮れてます。
Re: (スコア:1)
自己レス。
テストのログを見たところ、test_boolでこけるのは"\xa0".isspace()がFalseを返すのがお気に召さないからだそうです。
でも他の処理系ではどうなのよ?と疑問に思って、Debian lenny(i386)の上で動くPython2,5とWindowsの上で動くPython 2.6.1で上記の式を評価させてみたら……両方ともFalse。何だそりゃ?
Re: (スコア:1)
いや、それはちょっと違うんじゃないかと(^^;)
Python 3.xのstrはUNICODEですから、 "\xa0".isspace() の結果は2.xとは異なるのが当然です。
(Ubuntu+Python 2.6でも、 u"\xa0".isspace() はTrueが返ってきました)
u+00a0 : NO-BREAK SPACE
なので、 "\xa0".isspace() の結果はTrueでなければいけません。
で、このstr.isspaceの実体は、Include/unicodeobject.hで定義されている通りCライブラリのiswspaceですので、こちらが正常に機能していないのではないかと思われます。
Re:ソースからビルドしてみた (スコア:1)
・test_bool
原因は「configureで--with-wctype-functionsを指定した」だった模様で、外して再度ビルドしたらtest_boolをパスするようになりました。Python3でUnicode文字列がデフォルトになったという重要事項を、頭に血が上りかけて一時失念していました。
・test_unicode
test_boolと同じ原因で失敗していたようで、これもconfigureしなおして再ビルドしたらパスするようになりました。
・test_urllib
「プロキシを経由せずに直接接続するホスト」が「localhost」だけなのがイクナイ(127.0.0.0/8が無い)ので失敗していたようですが、no_proxy環境変数を設定したらパスしました。
# いいのかそれで?
・test_urllib2_localnet
このテストはhttp_proxy環境変数がセットされていると失敗するみたいです。
http_proxy環境変数を削除して実行したらパスしました。
とりあえずこれで致命的なテスト失敗は全部つぶせたようです。