4

私はこの問題を抱えています:

私はpythonbrewを実行してpython2.7を取得しているので、2.7 pythonを使用するためにmod_wsgiを再コンパイルしました。

そのために、私はこのチュートリアルに従いました:

code.google.com/p/modwsgi/wiki/QuickInstallationGuide

これには、ファイルのダウンロードが含まれていました-私が取得したtar.gzファイルがあります-そして、それを「構成」します ./configure --with-python=/home/bharal/.pythonbrew/pythons/Python-2.7.2/bin/python --enable-shared

今、私はこれが私の python にアタッチするのに適切な場所であると仮定しています - 上記の with-python の値は、私が得た応答ですwhich python

わかった!では、問題です。上記の構成を実行した後、実行するmakeと次のようになります。

/usr/include/features.h:160:1: warning: this is the location of the previous definition
/usr/share/apr-1.0/build/libtool --silent --mode=link --tag=disable-static x86_64-linux-gnu-gcc -o mod_wsgi.la  -rpath /usr/lib/apache2/modules -module -avoid-version    mod_wsgi.lo -L/home/aiyer    /.pythonbrew/pythons/Python-2.7.2/lib -L/home/aiyer/.pythonbrew/pythons/Python-2.7.2/lib  /python2.7/config -lpython2.7 -lpthread -ldl -lutil -lm
/usr/bin/ld: /home/bharal/.pythonbrew/pythons/Python-2.7.2/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC
/home/aiyer/.pythonbrew/pythons/Python-2.7.2/lib/libpython2.7.a: could not read symbols: Bad  value
collect2: ld returned 1 exit status
apxs:Error: Command failed with rc=65536

そして、私は何をすべきかわかりません。私はこの答えに出くわしました:

https://stackoverflow.com/a/6118155/1061426

しかし、これはあまり役に立ちません-一連の手順を説明できるほどではありませんが、考えるのにもっと興味深い一口です.

このコマンドを実行して、Python 64 ビットがあるかどうかを確認しました。

import sys
print maxint

64 ビットの場合 ==> 9223372036854775807 32 ビットの場合 ==> 2147483647

わかりましたので、64 ビットを実行しています。より大きな数値が得られるからです。だから私はこのドコをここで読んだ:

http://code.google.com/p/modwsgi/wiki/InstallationIssues#Mixing_32_Bit_And_64_Bit_Packages

私は64ビットのPythonを実行しているので、それは私の問題がこれではないことを意味します:

このエラーは、使用されている Python のバージョンが元々ジェネリック X86 32 ビット アーキテクチャ用にコンパイルされているのに対し、mod_wsgi は X86 64 ビット アーキテクチャ用にコンパイルされていることが原因であると考えられています。この場合、実際のエラーが発生します。これは、'libtool' が X86 32 ビット スタティック ライブラリから X86 64 ビット アーキテクチャ用の動的にロード可能なモジュールを生成できないように見えるためです。

むしろこれ?

または、このプラットフォームの「libtool」が X86 64 ビット スタティック ライブラリからロード可能なモジュールを作成できないことが原因です。

(上記リンクより引用)

もしそうなら私は一体何をしますか?私はどちらのシナリオで何をすべきかについて最も漠然とした考えを持っていません- はい、そのページの残りの部分を読みましたが、ギリシャ語で書かれている可能性があります (私はギリシャ語を話せません)。

助言がありますか?

更新:私はこれを修正したことがなく、最終的に私のubuntuに付属のpythonを使用しました-私のコードの観点からの実行と違いはありません。

4

3 に答える 3

6

ドキュメントには次のように記載されています。

最初の問題の場合、この問題の唯一の解決策は、X86 64 ビット アーキテクチャ用に Python を再コンパイルすることです。これを行う場合、コンパイルおよびインストール時に Python の「configure」スクリプトに「--enable-shared」オプションを確実に指定することが推奨され、実際には必要になる場合があります。

そのため、'make' を実行する前に、'--enable-shared' オプションが Python の 'configure' コマンドに指定されていることを確認して、ソース コードから Python を再インストールする必要があります。

「pythonbrew」でそれができない場合は、pythonbrew の人々に、共有ライブラリをサポートする Python バージョンを構築している方法は間違いなく壊れており、多くの組み込みシステムが実行に失敗するのを防ぐことができると伝えてください。

于 2012-07-04T23:48:55.790 に答える
0

Fedora 19 64 ビットでこの問題に遭遇したので、Python-devel と httpd-devel の両方のパッケージをインストールすると、mod_wsgi がソースからコンパイルおよびインストールされることがわかりました。

ただし、pythonbrewは使用していません。

于 2013-12-03T13:34:26.077 に答える
0

親愛なる Python 開発者の皆様、私も同じエラーを受け取っていました。これを修正した方法を次に示します。--enable-shared最初のステップは、オプションで python をインストールすることです。次に、Apache と Python の両方に開発依存関係がインストールされていることを確認します。sudo apt-get install apache2-devsudo apt-get install python3.8-dev。私はPython 3.8を使用していたので、インストールしpython3.8-devます。Pythonのバージョンに一致するものをインストールする必要があります。

これに加えて、 https: //modwsgi.readthedocs.io/en/develop/user-guides/quick-installation-guide.html#apache-requirements にあるこの記事を読み、指示に厳密に従ってください。

私はそれに従っただけで、適切に機能させることができました。

于 2020-05-18T06:28:09.830 に答える