2010-06-18 44 views
9

Tôi đang chạy Python 2.5.4 trên Windows và tôi tiếp tục gặp lỗi khi cố gắng nhập các mô-đun ElementTree hoặc cElementTree. Mã này rất đơn giản (tôi đang theo một hướng dẫn):Python 2.5.4 - ImportError: Không có mô đun nào có tên là etree.ElementTree

import xml.etree.ElementTree as xml 

root = xml.Element('root') 
child = xml.Element('child') 
root.append(child) 
child.attrib['name'] = "Charlie" 
file = open("test.xml", 'w') 
xml.ElementTree(root).write(file) 
file.close() 

Tôi nhận được thông báo lỗi khi tôi chạy nó từ cmd hoặc không phải khi tôi trực tiếp dùng thử từ trình thông dịch Python.

Traceback (most recent call last): 
File "C:\xml.py", line 31, in <module> 
    import xml.etree.ElementTree as xml 
File "C:\xml.py", line 31, in <module> 
    import xml.etree.ElementTree as xml 
ImportError: No module named etree.ElementTree 

Ngoài ra, tôi đã kiểm tra và các mô-đun có trong C: \ Python25 \ Lib \ xml \ etree

+0

Bạn không nhận được thông báo lỗi trong chủ đề của mình khi chạy mã mà bạn đã đăng. Bạn sẽ nhận được thông báo đó từ 'import etree.ElementTree'. Khi yêu cầu trợ giúp, sao chép/dán cả mã của bạn và thông báo traceback & lỗi, không nhập từ bộ nhớ. –

+0

Bạn đã thay đổi mã hiển thị của mình nhưng mã vẫn không tạo ra thông báo lỗi trong chủ đề của câu hỏi. Trong thực tế nó xuất hiện để làm việc. Ngoài việc sử dụng "tệp" làm tên biến, có vẻ OK. Bạn vẫn còn có một vấn đề? Nếu có thì sao? Nếu không, bạn chỉ nên chỉnh sửa câu hỏi của mình để nó phản ánh vấn đề ban đầu là gì. –

+0

Nếu trình thông dịch hoạt động, và cmd không, có thể bạn có phiên bản python cũ chạy từ cmd không? – wisty

Trả lời

7

Bạn bỏ lỡ dòng rất quan trọng trong việc hướng dẫn

import xml.etree.ElementTree as xml 

Điều này làm cho xml .etree.ElementTree bây giờ được gọi là xml trong suốt mô-đun.

tôi xảy ra để có python 2.5.4 và tôi đã xác minh rằng mã mà bạn có trên hoạt động:

[email protected] test$ cat test.py 
import xml.etree.ElementTree as xml 

root = xml.Element('root') 
child = xml.Element('child') 
root.append(child) 
child.attrib['name'] = "Charlie" 
file = open("test.xml", 'w') 
xml.ElementTree(root).write(file) 
file.close() 

[email protected] test$ /usr/bin/python2.5 --version 
Python 2.5.4 
[email protected] test$ /usr/bin/python2.5 test.py 
[email protected] test$ cat test.xml 
<root><child name="Charlie" /></root>[email protected] test$ 

Vì vậy, kiểm tra và chắc chắn rằng bạn đang chạy python 2.5.4 và nếu bạn đang cố gắng cài đặt lại. Vấn đề không phải là nó là python 2.5.4 hoặc mã của bạn. Đó là một số vấn đề cài đặt, bạn đang chạy một phiên bản khác của python, hoặc có một số vấn đề lạ khác.

+0

Cảm ơn :) Đó là lỗi đánh máy ... nhưng thậm chí sau đó nó không nhận ra mô-đun ... – Jen

+0

@Jen: Đăng mã thực tế mà bạn đã chạy, truy xuất lại và thông báo lỗi. "không nhận ra module" là mơ hồ. –

+0

Cảm ơn! Tôi đã tải xuống gói phần mềm ElementTree của effbot.org và cài đặt nó.Bây giờ nó đang hoạt động, nhưng tôi vẫn không biết tại sao thư viện gốc lại không hoạt động ... – Jen

4

Tôi đã có một tình huống buồn cười, có thể hoặc có thể không tương tự như vậy và tìm thấy giải pháp của tôi. Tôi đã tạo mô-đun của riêng mình để phân tích các tệp xml. Tôi đặt nó trong my_project_root/utilities/xml.py. Khi import xml.etree.ElementTree hoặc xml.etree từ trong mô-đun này, tôi sẽ gặp lỗi trong tiêu đề của bài đăng này. Nó đã được tìm kiếm trong chính nó, do đó, từ bên trong xml.py nó đã cố gắng để import etree.ElementTree, và không thể tìm thấy một gói hoặc mô-đun có tên etree. Tôi đã đổi tên mô-đun của mình thành xml_parse.py và xóa my_project_root/utilities/xml.pyc và nó hoạt động hoàn hảo. Một lời nhắc nhở đơn giản của việc sử dụng thận trọng với quy ước đặt tên mô-đun.

44

Bởi vì tên file ban đầu của bạn là C: \ xml.py

Thay đổi tên tập tin vào bất kỳ tên khác

+16

Ôi trời đau. Cũng đừng quên loại bỏ các "xml.pyc" tập tin, cũng! – BastiBen

+2

Tôi chỉ gặp vấn đề tương tự. Nó chỉ có vẻ hợp lý để đặt tên kịch bản của tôi xml.py vì tôi sẽ sử dụng nó để thử các libs xml lần đầu tiên để tìm hiểu chúng. Không nghĩ về tên của kịch bản vặn vẹo với không gian tên Python. :) Cảm ơn bạn đã chú ý đến điều này. – odigity

10

Tôi đã nhận lỗi cùng report("ImportError: No module named etree.ElementTree") khi đặt tên file test như xml.py. Và nó có cố định khi tôi đổi tên nó thành một cái gì đó khác như xmltest.py.

Các vấn đề liên quan