回答編集履歴

5

再追記

2017/08/27 21:21

投稿

退会済みユーザー
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

誤記の訂正

2017/08/27 21:21

投稿

退会済みユーザー
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()`をみるかぎり、前者がpure python codeであり、後がcベースのものに対応するように読めます。
165
+ `_get_py3_cls()`をみるかぎり、上述したコメント中のpure python codeは前者に対応するように思えます。
166
166
 
167
167
 
168
168
 

3

エラー原因について追記

2017/08/26 19:58

投稿

退会済みユーザー
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

不正確な部分を訂正

2017/08/26 19:55

投稿

退会済みユーザー
test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  ここで、`_iterparse`は`<class 'xml.etree.ElementTree.iterparse'>`であることが、JunYasumuraさんの調査の結果
30
30
 
31
- わかっていますので、エラー元の`__init__`は'xml.etree.ElementTree.iterparse'の`__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
- これが意味していることがよくわからない(pure Pythonとはなんなか?)のですが、少し関係ありそうなにおいがします。
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

修正

2017/08/26 19:05

投稿

退会済みユーザー
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
+