zcsl
zcsl

Reputation: 83

Running into an error when trying to pip install python-docx

I just did a fresh install of windows to clean up my computer, moved everything over to my D drive and installed Python through Windows Store (somehow it defaulted to my C drive, so I left it there because Pycharm was getting confused about its location), now I'm trying to pip install the python-docx module for the first time and I'm stuck. I have a recent version of Microsoft C++ Visual Build Tools installed. Excuse me for any irrelevant information I provided, just wishing to be thorough. Here's what's returning in command:

.>pip install python-docx
Collecting python-docx
  Using cached python-docx-0.8.11.tar.gz (5.6 MB)
  Preparing metadata (setup.py) ... done
Collecting lxml>=2.3.2
  Using cached lxml-4.6.3.tar.gz (3.2 MB)
  Preparing metadata (setup.py) ... done
Using legacy 'setup.py install' for python-docx, since package 'wheel' is not installed.
Using legacy 'setup.py install' for lxml, since package 'wheel' is not installed.
Installing collected packages: lxml, python-docx
    Running setup.py install for lxml ... error
    ERROR: Command errored out with exit status 1:
     command: 'C:\Users\cahez\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\cahez\\AppData\\Local\\Temp\\pip-install-8rz9vrlv\\lxml_69e9fa188fd042d6953641882e4b3a17\\setup.py'"'"'; __file__='"'"'C:\\Users\\cahez\\AppData\\Local\\Temp\\pip-install-8rz9vrlv\\lxml_69e9fa188fd042d6953641882e4b3a17\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\cahez\AppData\Local\Temp\pip-record-xpg_v_i_\install-record.txt' --single-version-externally-managed --user --prefix= --compile --install-headers 'C:\Users\cahez\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\Include\lxml'
         cwd: C:\Users\cahez\AppData\Local\Temp\pip-install-8rz9vrlv\lxml_69e9fa188fd042d6953641882e4b3a17\
    Complete output (76 lines):
    Building lxml version 4.6.3.
    Building without Cython.
    Building against pre-built libxml2 andl libxslt libraries
    running install
    C:\Users\cahez\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    running build
    running build_py
    creating build
    creating build\lib.win-amd64-3.10
    creating build\lib.win-amd64-3.10\lxml
    copying src\lxml\builder.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\cssselect.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\doctestcompare.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\ElementInclude.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\pyclasslookup.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\sax.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\usedoctest.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\_elementpath.py -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\__init__.py -> build\lib.win-amd64-3.10\lxml
    creating build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\__init__.py -> build\lib.win-amd64-3.10\lxml\includes
    creating build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\builder.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\clean.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\defs.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\diff.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\ElementSoup.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\formfill.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\html5parser.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\soupparser.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\usedoctest.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\_diffcommand.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\_html5builder.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\_setmixin.py -> build\lib.win-amd64-3.10\lxml\html
    copying src\lxml\html\__init__.py -> build\lib.win-amd64-3.10\lxml\html
    creating build\lib.win-amd64-3.10\lxml\isoschematron
    copying src\lxml\isoschematron\__init__.py -> build\lib.win-amd64-3.10\lxml\isoschematron
    copying src\lxml\etree.h -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\etree_api.h -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\lxml.etree.h -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\lxml.etree_api.h -> build\lib.win-amd64-3.10\lxml
    copying src\lxml\includes\c14n.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\config.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\dtdvalid.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\etreepublic.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\htmlparser.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\relaxng.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\schematron.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\tree.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\uri.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xinclude.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xmlerror.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xmlparser.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xmlschema.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xpath.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\xslt.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\__init__.pxd -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\etree_defs.h -> build\lib.win-amd64-3.10\lxml\includes
    copying src\lxml\includes\lxml-version.h -> build\lib.win-amd64-3.10\lxml\includes
    creating build\lib.win-amd64-3.10\lxml\isoschematron\resources
    creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\rng
    copying src\lxml\isoschematron\resources\rng\iso-schematron.rng -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\rng
    creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
    copying src\lxml\isoschematron\resources\xsl\RNG2Schtrn.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
    copying src\lxml\isoschematron\resources\xsl\XSD2Schtrn.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl
    creating build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_abstract_expand.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_dsdl_include.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_message.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_schematron_skeleton_for_xslt1.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\iso_svrl_for_xslt1.xsl -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    copying src\lxml\isoschematron\resources\xsl\iso-schematron-xslt1\readme.txt -> build\lib.win-amd64-3.10\lxml\isoschematron\resources\xsl\iso-schematron-xslt1
    running build_ext
    building 'lxml.etree' extension
    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
    ----------------------------------------
ERROR: Command errored out with exit status 1: 'C:\Users\cahez\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\python.exe' -u -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\cahez\\AppData\\Local\\Temp\\pip-install-8rz9vrlv\\lxml_69e9fa188fd042d6953641882e4b3a17\\setup.py'"'"'; __file__='"'"'C:\\Users\\cahez\\AppData\\Local\\Temp\\pip-install-8rz9vrlv\\lxml_69e9fa188fd042d6953641882e4b3a17\\setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record 'C:\Users\cahez\AppData\Local\Temp\pip-record-xpg_v_i_\install-record.txt' --single-version-externally-managed --user --prefix= --compile --install-headers 'C:\Users\cahez\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\Include\lxml' Check the logs for full command output.

Upvotes: 5

Views: 5178

Answers (1)

buran
buran

Reputation: 14233

One of the dependencies for python-docx is lxml. The latest stable version of lxml is 4.6.3, released on March 21, 2021. On PyPI there is no lxml wheel for 3.10, yet. So it try to compile from source and for that Microsoft Visual C++ 14.0 or greater is required, as stated in the error.

However you can manually install lxml, before install python-docx. Download and install unofficial binary from Gohlke Alternatively you can use pipwin to install it from Gohlke. Note there may still be problems with dependencies for lxml.

Of course, you can also downgrade to python3.9.

EDIT: As of 14 Dec 2021 the latest lxml version 4.7.1 supports python 3.10

Upvotes: 6

Related Questions