pycryptodomインストールの問題

pycryptodomインストールの問題

Wi-Fiホワイトリストを削除し、修正されたBIOSを再びeepromにフラッシュするようにThinkpadのBIOSを修正しました。これを行うには、次のツールを使用する必要があります。Thinkpad-uefi-フラグ起動できるようにイメージに署名します。 Thinkpad-uefi-signにはpycryptodomeが必要です。私はそれを使ってインストールしました。

apt install python3-pycryptodome

しかし、まだ動作していないとエラーが発生します。

ModuleNotFoundError: No module named 'Crypto'

thinkpad-uefi-sign/verify.pyを実行すると。私は最新のパッケージとPython 3.11.5を含むDebian Testing Trixieを使用しています。

私が試したもう一つのことは、次のようにインストールすることです。

pip install pycryptodome

ただし、これはパッケージが破損する可能性があるという警告を提供し、apt install python-xyzを使用してパッケージをインストールできます。その後、python3-fullをインストールし、python3 -m venv /path/to/venvを使用してvenv(仮想環境)を設定しました。次のコマンドを使用してvenvにpycryptodomをインストールしました。

/path/to/venv/bin/pip3 install pycryptodome

次に、thinkpad-uefi-sign/verify.pyスクリプトを実行します。

/path/to/venv/bin/python3 thinkpad-uefi-sign/verify.py Bios_Modded.bin

それでも同じエラーが発生します。その後、venvでpip3を使用してpycryptodomex、Crypto、pycryptoをインストールしようとしましたが、プログラムを実行してもエラーが発生しました。私も次の答えを試してみました。この他の記事、しかしあまり役に立ちませんでした。私はMacBookを試してみましたが、何らかの理由で動作するようですが、これはパッケージングに関する問題かもしれません。仕上げることが役に立ちます。ここにコマンドと完全な出力があります。

$ ./python3_venv_with_pycryptodome/bin/python3 thinkpad-uefi-sign/verify.py Bios_Modded.bin
Traceback (most recent call last):
  File "/home/witherslayer/Sowa/ThkpX1CG2_UEFIs/workflow/thinkpad-uefi-sign/verify.py", line 19, in <module>
    from Crypto.PublicKey import RSA
ModuleNotFoundError: No module named 'Crypto'

答え1

Pankiのコメントによると、Python venvを有効にした後に署名されたソフトウェアを実行することができました。次のコマンドを使用してbashに対してこれを行います。

$ source <venv>/bin/activate

~からPythonドキュメント

答え2

このライブラリには3.4.1以降、次の機能があります。

3.4.1(2016年2月21日)

新機能

  • Cryptodome(代わりに)パッケージの下にライブラリをインストールするオプションが追加されましたCrypto

実際にソースに記載されているように古いPyCryptoライブラリをインストールまたは使用する場合は、古いPyCryptoライブラリとの競合を避ける必要があります。

誰でも:

既存のPyCryptoライブラリをほぼ即座に置き換えます。

You install it with::

pip install pycryptodome
In this case, all modules are installed under the `Crypto` package. You can test everything is right with::
  
pip install pycryptodome-test-vectors
python -m Crypto.SelfTest

PyCryptoとPyCryptodomの両方を避けるべきです。お互いに干渉するので、両方を同時に設置してください。したがって、アプリケーション全体がvirtualenv

または:

以前のPyCryptoとは独立したライブラリです。

次のコマンドを使用してインストールできます。

pip install pycryptodomex
You can test everything is right with::

pip install pycryptodome-test-vectors
python -m Cryptodome.SelfTest

この場合、Cryptodomeすべてのモジュールはこのパッケージの下にインストールされます。既存のPyCryptoとPyCryptodomは共存できます。

aaディストリビュータとして、Debianは潜在的な競合を避けるためにこのオプションを選択しました(以前のPyCryptoをまったく提供していない場合でも):

debian/rules:

touch .separate_namespace

setup.py:

use_separate_namespace = os.path.isfile(".separate_namespace")
other_project = "pycryptodomex"
other_root = "Cryptodome"
if use_separate_namespace:
    project_name, other_project = other_project, project_name
    package_root, other_root = other_root, package_root 

最後Cryptoに(venvなしで)Debianパッケージライブラリを使用することもできます。Cryptodomesign.pyそしてverify.py

関連情報