web-dev-qa-db-ja.com

「警告:GMPまたはMPIRライブラリが見つかりません; Crypto.PublickKey._fastmathをビルドしない」エラーを修正Python 2.7でCentOS 6.4

Python 2.7(PythonBrewスクリプト経由でインストール))でCentOS 6.4サーバーを実行しています

「yum install gmp」でgmpをインストールし、「yum install python-devel」でpython-develをインストールしました(ただし、python 2.6シリーズ用)

私は私のサーバーにpycryptoをインストールしようとしていますが、それは私に与えています

warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath

Gipインストールをpipに「認識」させる方法はありますか?

ありがとう

16
user269334

Pipを使用してCentos 6.4にシステムレベルでFabricをインストールしようとすると、上記のエラーが発生しました。 (ファブリックはpycryptoを使用します)。

warning: GMP or MPIR library not found; Not building Crypto.PublickKey._fastmath

これは私がそれを機能させた方法です:

yum install gmp-devel
Sudo pip uninstall ecdsa pycrypto paramiko fabric 
# clear out the pip build dirs
rm -rf /tmp/pip-*
# make sure the directory containing libgmp.so.3 is on the python path
export LD_LIBRARY_PATH="/usr/lib64:$LD_LIBRARY_PATH"  
pip install fabric 
8
Joe J

これは、CentOSサーバーで作成したばかりのステップバイステップです(ルートではないことを前提としています)。

LIBGMP INSTALL

まず、次のように、ホームディレクトリのどこかにlibgmpをセットアップしてインストールします。

./configure prefix=$HOME
make
make install prefix=$HOME

これにより、〜/ lib、〜/ include、および〜/ shareディレクトリが作成されます(まだ存在しない場合)。

次に、.bashrcに次の行を追加します。

export LD_LIBRARY_PATH=$HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH

「。〜/ .bashrc」を実行して、変更を強制します。

PYCRYPTO BUILD&INSTALL

インストールプロセスを手動で処理する必要があります。まず、次のようにpycryptoをダウンロードします。

次に、構成を「少し」チートする必要があります。

cd pycrypto-26
./configure --includedir=$HOME/include
  • ファイルcd src/config.hを編集し、定義の値を修正します。

    #define HAVE_DECL_MPZ_POWM 1ではなく0

    #define HAVE_DECL_MPZ_POWM_SEC 0ではなく1

    #define HAVE_LIBGMP 0ではなく1

  • 次に、キーワード「_fastmath」を検索してsetup.pyファイルを編集し、Extension()宣言が以下のようになるようにします。

    Extension("Crypto.PublicKey._fastmath",
              include_dirs=['/home/<yourhome>/include','src/','/usr/include/'],
              library_dirs=['/home/<yourhome>/lib'],
              libraries=['gmp'],
              sources=["src/_fastmath.c"]),
    

最後に、pycryptoをビルドします:

python setup.py build

トレースのどこかに次の行が表示されます。

...
building 'Crypto.PublicKey._fastmath' extension
...

その後、「python setup.py install」を実行するか、私のようにpipを使用することをお勧めします。

cd ..
pip install ./pycrypto-2.6

次に、pythonから次の行を実行してもエラーが発生しないはずです。

>>> from Crypto.PublicKey import _fastmath
>>> import Crypto.Random
>>> _fastmath.HAVE_DECL_MPZ_POWM_SEC
1
7
lai

おそらくgmp-develもインストールする必要があります。これにより、pycryptoにlibgmpを使用して構築する必要があるヘッダーが提供されます。

Ubuntuでは、libgmp10のみがインストールされていました。 pycryptoをインストールしようとすると、同じ警告が表示されます。 Ubuntuパッケージlibgmp-devをインストールすると、警告は消え、ビルドスクリプトは_fastmath拡張を使用していることを示しました。

_fastmathを使用せずにpycryptoを既にインストールしている場合は、-Iフラグを付けて再インストールできます。

Sudo pip install -I pycrypto

5
Paul

いくつかあると確信しているように、ここ数年でこれに出くわした人だけのために。次のコマンドを実行して、Debian Jessieインストールでこの問題を簡単に修正できました。

$ Sudo apt-get install python-dev

その後、インストールを再試行してください。私の場合、私は次のコマンドでpipを介してansibleをインストールしようとしました。 同様のシナリオでこの投稿に出会える人も

$ Sudo pip install ansible

出力は次のようになります。

Successfully installed pycrypto
Cleaning up...

これが誰かの助けになることを願っています! -ジャスティン

3
Justin Rush

これをビルドするためのC++ライブラリがありません。 VS 2017のインストール https://visualstudio.Microsoft.com/downloads/#build-tools-for-visual-studio-2017

0
advdev