Python 2.7 - нет модуля с именем expat;используйте взамен SimpleXMLTreeBuilder - установка исходного кода - PullRequest
0 голосов
/ 25 октября 2018

Я работаю на сервере, который не позволяет устанавливать Python (pip, easy_install), поэтому мне нужно поместить исходный код в локальный каталог, чтобы запустить Python + openpyxl.

У меня естьДоступны Python2.7 и openpyxl-2.5.8, а также зависимости openpyxl.Тем не менее, когда openpyxl вызывает builtins.py, я получаю, что

ImportError: No module named expat; use SimpleXMLTreeBuilder instead

expat.py доступен в python2.7 / Lib / xml / parsers, но я предполагаю из-за того, как Python был «установлен»он не может распознать что-то, возможно, связанное с расширениями C (на основе https://groups.google.com/forum/#!topic/google-appengine/tzmakclSXJc).

По совету @ thom_nic по адресу https://stackoverflow.com/a/2067177, Я получил старый исходный код для elementtree и попытался указать XMLTreeBuilderв ElementTree для SimpleXMLTreeBuilder как:

from xml.etree import ElementTree
from elementtree import SimpleXMLTreeBuilder 
ElementTree.XMLTreeBuilder = SimpleXMLTreeBuilder.TreeBuilder 

Тем не менее, я все еще получаю ту же ошибку. Полный отзыв ниже для справки. Любые идеи о том, как обойти это, так как я не могу переустановить Python или запустить yum update или что-нибудь подобное?

Traceback:

Traceback (most recent call last):
  File "/home/python_packages/python2.7/Lib/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/home/python_packages/python2.7/Lib/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/release/create_sheet.py", line 18, in <module>
    from openpyxl.workbook import Workbook
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/__init__.py", line 6, in <module>
    from openpyxl.workbook import Workbook
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/workbook/__init__.py", line 5, in <module>
    from .workbook import Workbook
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/workbook/workbook.py", line 7, in <module>
    from openpyxl.worksheet import Worksheet
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/worksheet/__init__.py", line 4, in <module>
    from .worksheet import Worksheet
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/worksheet/worksheet.py", line 35, in <module>
    from openpyxl.cell import Cell
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/cell/__init__.py", line 4, in <module>
    from .cell import Cell, WriteOnlyCell
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/cell/cell.py", line 46, in <module>
    from openpyxl.styles.styleable import StyleableObject
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/styles/styleable.py", line 11, in <module>
    from .builtins import styles
  File "/home/python_packages/openpyxl-2.5.8/openpyxl/styles/builtins.py", line 1350, in <module>
    ('Normal', NamedStyle.from_tree(fromstring(normal))),
  File "/home/python_packages/python2.7/Lib/xml/etree/ElementTree.py", line 1310, in XML
    parser = XMLParser(target=TreeBuilder())
  File "/home/python_packages/python2.7/Lib/xml/etree/ElementTree.py", line 1482, in __init__
    "No module named expat; use SimpleXMLTreeBuilder instead"
ImportError: No module named expat; use SimpleXMLTreeBuilder instead

1 Ответ

0 голосов
/ 25 октября 2018

Выглядит как серьезно испорченная установка Python 2.7.Подсказка SimpleXMLBuilder почти наверняка не актуальна.Если вы можете установить lxml локально с помощью pip, вы можете сделать это, но я подозреваю, что у вас будет еще больше проблем с его зависимостями.Но в основном вам нужен чистый и обновленный Python 2.7.

...