目次
2.scrapy実行時にエラーが発生する(Python3ではOpenSSLモジュールでエラーが発生する)
3. pyopensslのアンインストール時にエラーが発生する
Scrapy ライブラリは Windows では互換性の問題があるため、以下では Linux システムへのインストールについて説明します。
1. pip3 コマンドに関するエラー報告
エラーコード:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.11/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
解決策: 元のコマンドの後にパラメータ --break-system-packages を追加します。
Scrapy はコマンドとして直接使用できるため、ターミナルに存在しないコマンドを入力すると、インストールするように求められます。
pip3 が動作しない場合があります。pipx に変更するか、apt install python3-file name を使用してインストールすることもできます。
pipx install scrapy
apt install python3-scrapy
2.scrapy実行時にエラーが発生する(Python3ではOpenSSLモジュールでエラーが発生する)
エラーコード:
Traceback (most recent call last):
File "/usr/bin/scrapy", line 33, in <module>
sys.exit(load_entry_point('Scrapy==2.10.0', 'console_scripts', 'scrapy')())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/bin/scrapy", line 25, in importlib_load_entry_point
return next(matches).load()
^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/metadata/__init__.py", line 202, in load
module = import_module(match.group('module'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen importlib._bootstrap>", line 1206, in _gcd_import
File "<frozen importlib._bootstrap>", line 1178, in _find_and_load
File "<frozen importlib._bootstrap>", line 1128, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
...
AttributeError: module 'lib' has no attribute 'SSL_CTX_set_ecdh_auto'
これは Python3 の OpenSSL モジュールのエラーです。アンインストールして再インストールする必要があります。
解決:
pip3 uninstall pyopenssl
pip3 install pyopenssl
いくつかのコマンドを試してみましたが、機能しないことがわかりました。
3. pyopensslのアンインストール時にエラーが発生する
エラーコード:
Found existing installation: pyOpenSSL 21.0.0
Not uninstalling pyopenssl at /usr/lib/python3/dist-packages, outside environment /usr
Can't uninstall 'pyOpenSSL'. No files were found to uninstall.
Requirement already satisfied: pyopenssl in /usr/lib/python3/dist-packages (21.0.0)
解決:
フォルダーへのパスを見つけて、pyOpenSSL-21.0.0 ディレクトリを直接削除して、再インストールします。
このフォルダーは /usr/lib/python3/dist-packages/ の下にあります。
フォルダ全体を削除する
コマンドを使用して pyopenssl を再インストールします
pip3 install pyopenssl --break-system-packages
インストールが成功したら、scrapy コマンドを入力します。
以下のように、ライブラリが正常にインストールされたことを意味します。
ipython3 を入力して確認することもできます。
ipython は、デフォルトの Python シェルよりもはるかに使いやすい Python インタラクティブ シェルで、自動変数補完、自動インデント、bash シェル コマンドのサポート、および多くの便利な組み込み関数と機能を備えています。
ライブラリが正常にインポートされ、エラーが報告されない限り、インストールが成功したことが証明されます。