回答編集履歴
5
再追記
answer
CHANGED
@@ -89,11 +89,21 @@
|
|
89
89
|
cベースの方のElementTreeを参照してしまい、しかもその中の`iterparse`の実装は、上で示した[古いドキュメント](http://lxml.de/1.3/api/xml.etree.ElementTree-pysrc.html#iterparse.__init__)の
|
90
90
|
ようになっているため、コンストラクタの引数が多すぎるというエラーが出たのではないでしょうか?
|
91
91
|
|
92
|
+
### 再追記
|
92
93
|
|
94
|
+
今回の問題となったモジュールである`defusedxml 0.5.0`について、
|
95
|
+
[Changelog](https://pypi.python.org/pypi/defusedxml)をみたところ
|
96
|
+
この一つ前のversionである`defusedxml 0.5.0.rc1`で
|
97
|
+
Python 2.6, 3.1, 3.2, 3.3へのサポートが打ち切りとなっている
|
98
|
+
ことがわかりました。
|
93
99
|
|
100
|
+
今回の環境ではpython3.3が使われているようなので、エラーの原因はさておくとしても、
|
101
|
+
python自体のversionは上げたほうがよさそうです。
|
94
102
|
|
95
103
|
|
96
104
|
|
97
105
|
|
98
106
|
|
99
107
|
|
108
|
+
|
109
|
+
|
4
誤記の訂正
answer
CHANGED
@@ -80,7 +80,7 @@
|
|
80
80
|
考えられるエラーの原因について、追記します。
|
81
81
|
|
82
82
|
`ElementTree.py`のコードをよく読んでみると、どうやらElementTreeには、pythonだけで書かれたpythonの標準ライブラリにあるもの(この意味でpure Python)と、cベースのものと2つあるようにみえます。
|
83
|
-
`_get_py3_cls()`をみるかぎり、
|
83
|
+
`_get_py3_cls()`をみるかぎり、上述したコメント中のpure python codeは前者に対応するように思えます。
|
84
84
|
|
85
85
|
すると、`_get_py3_cls()`がここで果たしている役割は、明示的に前者のライブラリをimportすることにあると考えられます。
|
86
86
|
(上述したコメントの意味するところは、python3.3では普通にimportすると後者を参照してしまうが、defusedxmlは前者のライブラリを参照する必要があると言うことになると思います)
|
3
エラー原因について追記
answer
CHANGED
@@ -74,3 +74,26 @@
|
|
74
74
|
|
75
75
|
以上の点から考えると、なんとなくですが、versionの問題が関係しているように思えます。
|
76
76
|
無責任な回答になってしまいますが、pythonのversionを変えると問題が解決するかもしれません。
|
77
|
+
|
78
|
+
### 追記
|
79
|
+
|
80
|
+
考えられるエラーの原因について、追記します。
|
81
|
+
|
82
|
+
`ElementTree.py`のコードをよく読んでみると、どうやらElementTreeには、pythonだけで書かれたpythonの標準ライブラリにあるもの(この意味でpure Python)と、cベースのものと2つあるようにみえます。
|
83
|
+
`_get_py3_cls()`をみるかぎり、前者がpure python codeであり、後者がcベースのものに対応するように読めます。
|
84
|
+
|
85
|
+
すると、`_get_py3_cls()`がここで果たしている役割は、明示的に前者のライブラリをimportすることにあると考えられます。
|
86
|
+
(上述したコメントの意味するところは、python3.3では普通にimportすると後者を参照してしまうが、defusedxmlは前者のライブラリを参照する必要があると言うことになると思います)
|
87
|
+
|
88
|
+
そして今回エラーの原因となっているdefusedxml(これは私の提示したものとversionが異なっているはずです)では、こうしたことが考慮されていないか・正常に機能していないがために、
|
89
|
+
cベースの方のElementTreeを参照してしまい、しかもその中の`iterparse`の実装は、上で示した[古いドキュメント](http://lxml.de/1.3/api/xml.etree.ElementTree-pysrc.html#iterparse.__init__)の
|
90
|
+
ようになっているため、コンストラクタの引数が多すぎるというエラーが出たのではないでしょうか?
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
2
不正確な部分を訂正
answer
CHANGED
@@ -13,7 +13,7 @@
|
|
13
13
|
をしているからではないでしょうか?
|
14
14
|
|
15
15
|
ここで、`_iterparse`は`<class 'xml.etree.ElementTree.iterparse'>`であることが、JunYasumuraさんの調査の結果
|
16
|
-
わかっていますので、エラー元の`__init__`は
|
16
|
+
わかっていますので、エラー元の`__init__`は`xml.etree.ElementTree.iterparse`の`__init__`ではないかと考えられます。
|
17
17
|
|
18
18
|
ちなみに、[古いドキュメント](http://lxml.de/1.3/api/xml.etree.ElementTree-pysrc.html#iterparse.__init__)の`__init__`は、
|
19
19
|
```
|
@@ -69,14 +69,8 @@
|
|
69
69
|
という部分に、
|
70
70
|
"Python3.3は**pure Python**コードを隠蔽しているが、defusedxmlにはそれが必要である"
|
71
71
|
というコメントがあります。
|
72
|
-
これが意味していることがよくわからない
|
72
|
+
これが意味していることがよくわからないのですが、少し関係ありそうなにおいがします。
|
73
73
|
|
74
|
-
pure Pythonが仮にlxmlモジュールの中にある`xml.etree.ElementTree`のことをさしているのであるとすれば、
|
75
|
-
この文は、
|
76
|
-
" Python3.3はpythonの標準ライブラリの中にあるElementTreeを参照するが、defusedxmlにはlxmlの方のElementTreeが必要である"
|
77
|
-
というふうに解釈できるかもしれません。
|
78
74
|
|
79
|
-
|
80
|
-
|
81
75
|
以上の点から考えると、なんとなくですが、versionの問題が関係しているように思えます。
|
82
76
|
無責任な回答になってしまいますが、pythonのversionを変えると問題が解決するかもしれません。
|
1
修正
answer
CHANGED
@@ -67,10 +67,16 @@
|
|
67
67
|
```
|
68
68
|
|
69
69
|
という部分に、
|
70
|
-
Python3.3は**pure Python**コードを隠蔽しているが、defusedxmlにはそれが必要である
|
70
|
+
"Python3.3は**pure Python**コードを隠蔽しているが、defusedxmlにはそれが必要である"
|
71
71
|
というコメントがあります。
|
72
72
|
これが意味していることがよくわからない(pure Pythonとはなんなのか?)のですが、少し関係ありそうなにおいがします。
|
73
73
|
|
74
|
+
pure Pythonが仮にlxmlモジュールの中にある`xml.etree.ElementTree`のことをさしているのであるとすれば、
|
75
|
+
この文は、
|
76
|
+
" Python3.3はpythonの標準ライブラリの中にあるElementTreeを参照するが、defusedxmlにはlxmlの方のElementTreeが必要である"
|
77
|
+
というふうに解釈できるかもしれません。
|
74
78
|
|
79
|
+
|
80
|
+
|
75
81
|
以上の点から考えると、なんとなくですが、versionの問題が関係しているように思えます。
|
76
|
-
無責任な回答になってしまいますが、pythonのversionを変えると問題が解決するかもしれません。
|
82
|
+
無責任な回答になってしまいますが、pythonのversionを変えると問題が解決するかもしれません。
|