1

Mac OS X 10.6 でデフォルト以外の Python インストールを使用して、Apache 2.2.14 で mod_wsgi 3.1 を実行しようとしています。

mod_wsgi ソースをダウンロードした後、次を実行します。

sudo apachectl -k stop

それから

./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python
make
sudo make install

次に、Apacheを再度起動します

sudo apachectl -k start

/var/log/httpd/error_log を cat すると、次のように表示されます。

[2009 年 12 月 21 日月曜日 12:27:26] [警告] mod_wsgi: Python/2.6.4 用にコンパイルされています。

[2009 年 12 月 21 日月曜日 12:27:26] [警告] mod_wsgi: Python/2.6.1 を使用したランタイム。

[2009 年 12 月 21 日月曜日 12:27:26] [通知] Apache/2.2.14 (Unix) DAV/2 mod_wsgi/3.1 Python/2.6.1 構成 -- 通常の運用を再開

otool -L mod_wsgi.so を実行すると、次のように表示されます。

mod_wsgi.so:

/System/Library/Frameworks/Python.framework/Versions/2.6/Python (互換バージョン 2.6.0、現在のバージョン 2.6.1)

/usr/lib/libSystem.B.dylib (互換バージョン1.0.0、現行バージョン125.0.0)

何を与える?なぜシステム フレームワークとリンクしているのですか。

mod_wsgi の configure および build コマンドからの出力は次のとおりです。


アルキメデス:mod_wsgi-3.1 awolf$ ./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python

apxs2をチェックしています...いいえ

apxs をチェックしています... /opt/apache2/bin/apxs

Apache のバージョンを確認しています... 2.2.14

構成: ./config.status の作成

config.status: Makefile の作成

アルキメデス:mod_wsgi-3.1 awolf$ make

/opt/apache2/bin/apxs -c -I/usr/local/Cellar/python/2.6.4/include/python2.6 -DNDEBUG -Wc,'-arch x86_64' mod_wsgi.c -L/usr/local/ Cellar/python/2.6.4/lib -L/usr/local/Cellar/python/2.6.4/lib/python2.6/config -arch x86_64 -lpython2.6 -ldl /Library/Webserver/build/libtool --サイレント --mode=compile gcc -prefer-pic -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -no-cpp-precomp -g -O2 -I/opt/apache2/include -I/opt/apache2/include -I/opt/apache2/include - arch x86_64 -I/usr/local/Cellar/python/2.6.4/include/python2.6 -DNDEBUG -c -o mod_wsgi.lo mod_wsgi.c && touch mod_wsgi.slo

/usr/local/Cellar/python/2.6.4/include/python2.6/Python.h:125 からインクルードされたファイルで、

             from mod_wsgi.c:135:

/usr/local/Cellar/python/2.6.4/include/python2.6/modsupport.h:27: 警告: 'PyArg_ParseTuple' は認識されない形式の関数型です /Library/Webserver/build/libtool --silent --mode =link gcc -o mod_wsgi.la -rpath /opt/apache2/modules -module -avoid-version mod_wsgi.lo -L/usr/local/Cellar/python/2.6.4/lib -L/usr/local/Cellar/ python/2.6.4/lib/python2.6/config -arch x86_64 -lpython2.6 -ldl

Archimedes:mod_wsgi-3.1 awolf$ sudo make install

パスワード:

/opt/apache2/bin/apxs -i -S LIBEXECDIR=/opt/apache2/modules -n 'mod_wsgi' mod_wsgi.la

/Library/Webserver/build/instdso.sh SH_LIBTOOL='/Library/Webserver/build/libtool' mod_wsgi.la /opt/apache2/modules

/Library/Webserver/build/libtool --mode=install cp mod_wsgi.la /opt/apache2/modules/

cp .libs/mod_wsgi.so /opt/apache2/modules/mod_wsgi.so

cp .libs/mod_wsgi.lai /opt/apache2/modules/mod_wsgi.la

cp .libs/mod_wsgi.a /opt/apache2/modules/mod_wsgi.a

chmod 644 /opt/apache2/modules/mod_wsgi.a

ranlib /opt/apache2/modules/mod_wsgi.a

4

3 に答える 3

2

この投稿は古いですが、mac + homebrew + python に関する検索でまだ出てくるので、役立つ情報を追加したいと思います。別のモジュール(uwsgi)だけで、OPとして問題が発生していました。Homebrew を放棄する必要はないことを学びました。実際、Homebrew は Python をフレームワークとしてインストールできます。そうするように指示するだけです:

% brew uninstall python
Uninstalling /usr/local/Cellar/python/2.7.2...
% brew install python --universal --framework

...そして、すべて順調です。

于 2011-10-13T03:17:24.547 に答える
0

何らかの理由で、一部のPythonフレームワークがソースコード(通常はMacPorts)からインストールされるため、Pythonフレームワークに埋め込まれている情報に問題があり、実行可能ファイルの実行時ルックアップパスが正しく設定されていません。その結果、代わりに/ System/LibraryのPythonフレームワークを使用することになります。

mod_wsgiに対して「configure」を実行する場合は、追加のオプション「--disable-framework」を追加します。例えば:

./configure --with-python=/usr/local/Cellar/python/2.6.4/bin/python --disable-framework

これにより、Pythonライブラリ/フレームワークのリンク方法が変更され、問題が解決する可能性があります。

詳細については、以下のバグ修正(1)および(2)を参照してください。

http://code.google.com/p/modwsgi/wiki/ChangesInVersion0206

于 2009-12-21T21:51:46.470 に答える
0

Graham は、mod_wsgi メーリング リストでこれを解決するのを手伝ってくれました。

http://groups.google.com/group/modwsgi/browse_thread/thread/4046eaf290a49b1e/ae14888450de39f5#ae14888450de39f5

要約は次のとおりです。

問題は、Python のインストールが Homebrew 経由で行われたことでした。Homebrew の python は、フレームワークまたは dylib インストールとしてインストールされていないため、埋め込みには使用できませんでした (Apache/mod_wsgi など)。

代わりに、ソースから python 2.6.4 をインストールしました。

./configure --prefix=/usr/local/python-2.6.4 --enable-framework=/usr/local/python-2.6.4/frameworks --enable-universalsdk=/ MACOSX_DEPLOYMENT_TARGET=10.5 --with-universal-archs=3-way
make
sudo make install

mod_wsgi をビルドできる Python 2.6.4 のバージョンをビルドすることができました。

./configure --with-python=/usr/local/python-2.6.4/bin/python
make
sudo make install

確認するために:

otool -L /opt/apache2/modules/ mod_wsgi.so 

/opt/apache2/modules/mod_wsgi.so: /usr/lib/libSystem.B.dylib (互換バージョン 1.0.0、現在のバージョン 125.0.0) /usr/local/python-2.6.4/frameworks/Python.framework /Versions/2.6/Python (互換バージョン 2.6.0、現在のバージョン 2.6.0)

は、python が現在、システム フレームワークではなく 2.6.4 フレームワークを使用していることを示しています。Apache を起動すると、バージョンの不一致の警告が表示されなくなりました。

django、psycopg2などを新しいpythonインストールに再インストールしましたが、すべてが魅力的に機能しています。ご協力いただきありがとうございます。

于 2009-12-24T09:05:37.953 に答える