2016-11-12 21 views
2

mod_wsgiをpython 2.7.10でMac OS X 10.12のvirtualenvにインストールしようとしています。私はDjango 1.10.3でそれを使うつもりです。 私は次の出力を得る「のmod_wsgiをインストールピップ」を実行します。pip install mod_wsgiがvirtualenvで失敗する

Collecting mod_wsgi 
Using cached mod_wsgi-4.5.7.tar.gz 
Complete output from command python setup.py egg_info: 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "/private/var/folders/sf/kdqqs98d06326180mss7hggh0000gn/T/pip-build-hgA7s1/mod-wsgi/setup.py", line 247, in <module> 
    APR_INCLUDES = get_apr_includes().split() 
    File "/private/var/folders/sf/kdqqs98d06326180mss7hggh0000gn/T/pip-build-hgA7s1/mod-wsgi/setup.py", line 219, in get_apr_includes 
    stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in __init__ 
    errread, errwrite) 
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child 
    raise child_exception 
OSError: [Errno 2] No such file or directory 

---------------------------------------- 
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/sf/kdqqs98d06326180mss7hggh0000gn/T/pip-build-hgA7s1/mod-wsgi/ 

私はそれは私がちょうどそれを設定する方法で何かが欠けてるのかもしれないVIRTUALENVする新たなんです。私はピップをアップグレードしようとしました、setuptoolsとez_setupをpip経由で再インストールしました。

+0

Xcodeコマンドラインツールがインストールされていますか? '' xcode-select --install''は実行時にインストールされていると言いますか? –

+0

このコマンドを実行すると、インストールを実行するように要求されました。私は先に進み、コマンドラインツールをインストールしました。私はpipをmod_wsgiにインストールすると、同じ問題が発生します。 –

+0

''/usr/sbin/apxs''プログラムが存在しますか? '' apxs''はシステムのどこにあっても見つかりますか? '' find/-name apxs''を使うことができます。アップルはApacheモジュールとmod_wsgiのインストールを新しい主要なOSのアップデートに掛け、今回は通常の場所に '' apxs''をインストールしないように見える。 –

答えて

8

MacOS X Sierraにmod_wsgiをインストールするには、2つの問題があります。

第1の問題は、Appleがサードパーティ製のApacheモジュールをインストールできるという点でAppleが完全に使用できないデフォルトのApacheインストールを行ったことです。これはMacOS Xの以前のバージョンですでに取り上げられていた障害の上に構築されているため、作業を進めるにはフープを飛ばしなければなりませんでした。

この場合の問題は、AppleがXcodeディストリビューションからapr-1-configapu-1-configプログラムを削除したことです。これは、存在するApache構成に関する特定のタイプの照会が行われたときにapxsが失敗することを意味します。これは、Apache用のサードパーティ製モジュールを構築するために必要な情報です。ヘッダファイルがどこにインストールされているかを知らなければ、Apacheモジュールのビルドは失敗します。

すべてのOSアップデートで追加のApacheモジュールをインストールし、OSの寿命に合わせて修正することはできないため、回避策が必要なAppleの歴史を考えれば、この問題を修正することはもうできません。

他のフォーラムで問題を回避する一つの提案は醸造で4月とAPUのパッケージをインストールしapxsが見ている場所にそれらからapr-1-configapu-1-configプログラムをシンボリックリンクすることです。これは私にとっては、モジュールがbrewヘッダーファイルに対してコンパイルされている可能性があり、オペレーティングシステムのApacheインストールで提供されるライブラリバージョンと一致しない可能性があるため、エラーが発生しやすくなります。クラッシュする可能性があります。

したがって、唯一の保証された解決策は、オペレーティングシステムに付属のApacheインストールを使用しないことです。

Apacheをインストールし、Apacheの抽出インストール(APRとAPUだけでなく、抽出)を使用するために、brewを使用することもできます。

pip install mod_wsgiメソッドを使用している場合、別のオプションは、mod_wsgiに提供されているインストール可能なApache pipを最初に使用することです。

pip install -vvv mod_wsgi-httpd 

これは、選択肢がない場合にのみ行う必要があります。可能であれば、常にシステムのApacheを使用する必要があります。今は選択肢がないようです。

これは、ApacheをPythonインストール環境または仮想環境にインストールします。それはAPR/APU/Apacheとおそらく他の必要なライブラリをコンパイル/インストールするため、少し時間がかかります。 -vvvを使用していますので、コンパイルを行っていることが分かります。

これが完了したら、pip install mod_wsgiを実行します。

mod_wsgi-expressを使用する場合にのみ有効です。この方法でビルドされたモジュールがオペレーティングシステムのApacheと互換性がないため、コンパイルされたmod_wsgiをオペレーティングシステムで使用したい場合は、これを使用できません。

第2の問題は、MacOS X Sierraがプロセスタスク情報を取得するためにオペレーティングシステムAPIを変更したことです。これは、mod_wsgi 4.5.7以前のものは、とにかくコンパイルに失敗することを意味します。 mod_wsgi 4.5.8に入っている修正があります。必要に応じて4.5.8がリリースされるまで、mod_wsgi githubリポジトリのコードを使用することもできます。


UPDATE 1

pip install mod_wsgiを行うときのためにsetup.pyにハックを含めることができました。これはmod_wsgi 4.5.8にもあります。つまり、あなたはまだシステムのApacheを使用することができ、pip install mod_wsgi-httpdなどの別のものをインストールする必要はありません。これは、mod_wsgiをインストールするためのconfigure/makeメソッドの同様の問題を解決しません。

+0

brewを使ってApacheをインストールすることは、このトリックをやったようです!このような堅牢で明確な答えをありがとう! –

関連する問題