Windowsの Python環境で lxml をいれようとすると “legacy-install-failure” がでる。

こんにちはやまぱんです。
今回こちらの qiita の記事 を見て面白そうだからやってみようと思ってやってみたものの、詰まったので備忘録にメモしておきます。

・今話題のChatGPTをPythonでいい感じに使ってみよう!
https://qiita.com/ekusiadadus/items/3304c4832106b244a60f

最近アドベントカレンダーの季節で、分野が違ってもやってみたくなるような面白い記事が多くて楽しいです。
また来週もやってみよう。

ChatGPT とは


って感じです。

ChatGPTについてChatGPTとはなにかを聞いてみた。

ChatGPT は、OpenAI によってトレーニングされた大型言語モデルです。
このモデルは、自然言語理解を基盤としており、対話的なテキストを生成することができます。
このモデルは、大規模な文書コーパスを用いてトレーニングされ、複雑な自然言語の問題を解決する能力を持っています。
ChatGPT は、対話系アプリやサポートチャットボットなどの対話システムを開発するために使用されることが多いです。
また、対話型 AI システムの構築や、テキスト生成タスクにも利用されます。

ChatGPTそのものの使い方については下記が参考になるかと思います。

・質問に対し流暢な日本語で回答してくれる「ChatGPT」が公開 - 試し方はこちら
https://softantenna.com/blog/chat-gpt-beta/

環境情報

OS : Windows 10 21H2
Python Version : 3.11.1
PIP Version : 22.3.1

事前準備

今回初めてWindows環境にPython環境を作りました。
https://www.python.jp/install/windows/install.html
・Anacondaを利用する方法もあったようですが、今回は不要なものは入れたくなかったので利用しませんでした。

Python Anacondaとは、Pythonのディストリビューション(distribution)です。ディストリビューションとはコンパイルしてある設定済みのソフトウェアの集合体を指します。難しい言葉が続きましたが、Pythonでの開発に必要なものをすべてセットにしたものがAnacondaです。Anacondaを利用してPythonの開発環境を導入することで、手間のかかるインストール作業や細かな設定などの環境構築にかかる時間を短縮し、よく使うライブラリやツールをまとめてインストールすることができます。Pythonの開発はライブラリによって補完される部分が非常に大きいため、有用なライブラリをインストールする必要があります。しかし、初めてPythonに触れる人にはどのライブラリを導入するべきかわかりにくい難点があり、その点を補ってくれるのがAnacondaというわけです。
・Python Anacondaとは?
https://www.creativevillage.ne.jp/category/topcreators/web-creator/web-programmer/72837/#head-1

詰まったポイント

・今話題のChatGPTをPythonでいい感じに使ってみよう!
https://qiita.com/ekusiadadus/items/3304c4832106b244a60f
今回上記の記事で紹介されている下記のコマンドを実行したところ、途中まで順調にいってたものの、lxml の部分でエラーがでました。

pip install chatgptpy --upgrade
エラー抜粋
      creating build\temp.win-amd64-cpython-311\Release\src\lxml
      "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.34.31933\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DCYTHON_CLINE_IN_TRACEBACK=0 -Isrc -Isrc\lxml\includes -IC:\Users\vainf\AppData\Local\Programs\Python\Python311\include -IC:\Users\vainf\AppData\Local\Programs\Python\Python311\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.34.31933\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcsrc\lxml\etree.c /Fobuild\temp.win-amd64-cpython-311\Release\src\lxml\etree.obj -w
      cl : コマンド ライン warning D9025 : '/W3' より '/w' が優先されます。
      etree.c
      C:\Users\vainf\AppData\Local\Temp\pip-install-jd_6qz64\lxml_d61b68255dd74341831e31c1d5634d1e\src\lxml\includes/etree_defs.h(14): fatal error C1083: include ファイルを開けません。'libxml/xmlversion.h':No such file or directory
      Compile failed: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.34.31933\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.34.31933\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -I/usr/include/libxml2 "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.34.31933\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22000.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22000.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /TcC:\Users\vainf\AppData\Local\Temp\xmlXPathInitp8a2z2_7.c /FoUsers\vainf\AppData\Local\Temp\xmlXPathInitp8a2z2_7.obj
      xmlXPathInitp8a2z2_7.c
      C:\Users\vainf\AppData\Local\Temp\xmlXPathInitp8a2z2_7.c(1): fatal error C1083: include ファイルを開けません。'libxml/xpath.h':No such file or directory
      *********************************************************************************
      Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
      *********************************************************************************
      error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.34.31933\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure

× Encountered error while trying to install package.
╰─> lxml

note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.

下記のコマンドたちを実行してみても改善しませんでした。

pip install lxml
pip install --upgrade pip
pip install --upgrade wheel
pip install --upgrade setuptools

lxmlライブラリ とは

lxml とは、 Python で xml や html を扱うためのライブラリです。スクレイピングと言って、Webサイトの html を解析して情報を抽出するプログラムを作成する場合などに多く用いられます。
Python で html を解析するには、「htmllib」や「Beautiful Soup」といったモジュールを使う方法がありますが、 lxml は、それらと比較して、より高速・柔軟に html を解析できることが特徴と言われています。
・Pythonのlxmlライブラリの使い方【初心者向け https://magazine.techacademy.jp/magazine/19063

対処法

結論から言えば、lxml-4.9.0-cp311-cp311-win_amd64.whl を下記サイトからダウンロードして、ダウンロードしたファイルを指定してインストールすることで無事にインストールを進めることができ、当初実行したかったコマンドを実行することができました。
・Archived: Unofficial Windows Binaries for Python Extension Packages
https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml

pip install ./lxml-4.9.0-cp311-cp311-win_amd64.whl

とても参考になったサイトは下記です。
・WindowsのPython3.5でlxmlを入れようとしたら詰んだ
https://y-mattu.hatenablog.com/entry/2016/01/17/145725
・Python3.5でlxmlのインストールができない(Windows)
https://saitune.hatenablog.com/entry/2016/03/29/152328

また下記もピンポイントではないですが、役にたったサイトです。
・pip installでerror: legacy-install-failureが出た時の対処
https://monaledge.com/article/592
なるほど、バージョン依存か何かしらのせいでレポジトリにインストールしたいlxml がないっぽいのかなと考えました。

PythonでChatGPTを触ることができた

やっとお話することができました。

その他参考にしたサイト

今回の環境構築全般において確認したサイトです。
・コード合ってるのにSyntaxError: invalid syntaxが出る問題【visual studio code / Python】
https://www.rakugochunen.com/programming/syntaxerror-invalid-syntax-visual-studio-code-python

・pythonでImportError: No module named ・・・が出たときの確認方法と対処
https://plus-idea.net/python-import-error-no-module-name/#i-2

・【python】pip installの際に「error: Microsoft Visual C++ 14.0 is required」が発生した場合の対応方法
https://tech.nkhn37.net/python-pip-install-error-microsoft-visual-c-14/#i-2

シェアする

  • このエントリーをはてなブックマークに追加

フォローする