回答編集履歴
5
再追記
test
CHANGED
@@ -180,20 +180,40 @@
|
|
180
180
|
|
181
181
|
|
182
182
|
|
183
|
-
|
183
|
+
### 再追記
|
184
|
+
|
185
|
+
|
186
|
+
|
184
|
-
|
187
|
+
今回の問題となったモジュールである`defusedxml 0.5.0`について、
|
188
|
+
|
185
|
-
|
189
|
+
[Changelog](https://pypi.python.org/pypi/defusedxml)をみたところ
|
190
|
+
|
186
|
-
|
191
|
+
この一つ前のversionである`defusedxml 0.5.0.rc1`で
|
192
|
+
|
187
|
-
|
193
|
+
Python 2.6, 3.1, 3.2, 3.3へのサポートが打ち切りとなっている
|
194
|
+
|
188
|
-
|
195
|
+
ことがわかりました。
|
196
|
+
|
197
|
+
|
198
|
+
|
189
|
-
|
199
|
+
今回の環境ではpython3.3が使われているようなので、エラーの原因はさておくとしても、
|
200
|
+
|
190
|
-
|
201
|
+
python自体のversionは上げたほうがよさそうです。
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
202
|
+
|
203
|
+
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
4
誤記の訂正
test
CHANGED
@@ -162,7 +162,7 @@
|
|
162
162
|
|
163
163
|
`ElementTree.py`のコードをよく読んでみると、どうやらElementTreeには、pythonだけで書かれたpythonの標準ライブラリにあるもの(この意味でpure Python)と、cベースのものと2つあるようにみえます。
|
164
164
|
|
165
|
-
`_get_py3_cls()`をみるかぎり、
|
165
|
+
`_get_py3_cls()`をみるかぎり、上述したコメント中のpure python codeは前者に対応するように思えます。
|
166
166
|
|
167
167
|
|
168
168
|
|
3
エラー原因について追記
test
CHANGED
@@ -151,3 +151,49 @@
|
|
151
151
|
無責任な回答になってしまいますが、pythonのversionを変えると問題が解決するかもしれません。
|
152
152
|
|
153
153
|
|
154
|
+
|
155
|
+
### 追記
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
考えられるエラーの原因について、追記します。
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
`ElementTree.py`のコードをよく読んでみると、どうやらElementTreeには、pythonだけで書かれたpythonの標準ライブラリにあるもの(この意味でpure Python)と、cベースのものと2つあるようにみえます。
|
164
|
+
|
165
|
+
`_get_py3_cls()`をみるかぎり、前者がpure python codeであり、後者がcベースのものに対応するように読めます。
|
166
|
+
|
167
|
+
|
168
|
+
|
169
|
+
すると、`_get_py3_cls()`がここで果たしている役割は、明示的に前者のライブラリをimportすることにあると考えられます。
|
170
|
+
|
171
|
+
(上述したコメントの意味するところは、python3.3では普通にimportすると後者を参照してしまうが、defusedxmlは前者のライブラリを参照する必要があると言うことになると思います)
|
172
|
+
|
173
|
+
|
174
|
+
|
175
|
+
そして今回エラーの原因となっているdefusedxml(これは私の提示したものとversionが異なっているはずです)では、こうしたことが考慮されていないか・正常に機能していないがために、
|
176
|
+
|
177
|
+
cベースの方のElementTreeを参照してしまい、しかもその中の`iterparse`の実装は、上で示した[古いドキュメント](http://lxml.de/1.3/api/xml.etree.ElementTree-pysrc.html#iterparse.__init__)の
|
178
|
+
|
179
|
+
ようになっているため、コンストラクタの引数が多すぎるというエラーが出たのではないでしょうか?
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
|
198
|
+
|
199
|
+
|
2
不正確な部分を訂正
test
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
ここで、`_iterparse`は`<class 'xml.etree.ElementTree.iterparse'>`であることが、JunYasumuraさんの調査の結果
|
30
30
|
|
31
|
-
わかっていますので、エラー元の`__init__`は
|
31
|
+
わかっていますので、エラー元の`__init__`は`xml.etree.ElementTree.iterparse`の`__init__`ではないかと考えられます。
|
32
32
|
|
33
33
|
|
34
34
|
|
@@ -140,19 +140,7 @@
|
|
140
140
|
|
141
141
|
というコメントがあります。
|
142
142
|
|
143
|
-
これが意味していることがよくわからない
|
143
|
+
これが意味していることがよくわからないのですが、少し関係ありそうなにおいがします。
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
pure Pythonが仮にlxmlモジュールの中にある`xml.etree.ElementTree`のことをさしているのであるとすれば、
|
148
|
-
|
149
|
-
この文は、
|
150
|
-
|
151
|
-
" Python3.3はpythonの標準ライブラリの中にあるElementTreeを参照するが、defusedxmlにはlxmlの方のElementTreeが必要である"
|
152
|
-
|
153
|
-
というふうに解釈できるかもしれません。
|
154
|
-
|
155
|
-
|
156
144
|
|
157
145
|
|
158
146
|
|
1
修正
test
CHANGED
@@ -136,11 +136,23 @@
|
|
136
136
|
|
137
137
|
という部分に、
|
138
138
|
|
139
|
-
Python3.3は**pure Python**コードを隠蔽しているが、defusedxmlにはそれが必要である
|
139
|
+
"Python3.3は**pure Python**コードを隠蔽しているが、defusedxmlにはそれが必要である"
|
140
140
|
|
141
141
|
というコメントがあります。
|
142
142
|
|
143
143
|
これが意味していることがよくわからない(pure Pythonとはなんなのか?)のですが、少し関係ありそうなにおいがします。
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
pure Pythonが仮にlxmlモジュールの中にある`xml.etree.ElementTree`のことをさしているのであるとすれば、
|
148
|
+
|
149
|
+
この文は、
|
150
|
+
|
151
|
+
" Python3.3はpythonの標準ライブラリの中にあるElementTreeを参照するが、defusedxmlにはlxmlの方のElementTreeが必要である"
|
152
|
+
|
153
|
+
というふうに解釈できるかもしれません。
|
154
|
+
|
155
|
+
|
144
156
|
|
145
157
|
|
146
158
|
|
@@ -149,3 +161,5 @@
|
|
149
161
|
以上の点から考えると、なんとなくですが、versionの問題が関係しているように思えます。
|
150
162
|
|
151
163
|
無責任な回答になってしまいますが、pythonのversionを変えると問題が解決するかもしれません。
|
164
|
+
|
165
|
+
|