3

uwgsi サーバーと nginx サーバーを実行する 2 つのインスタンスがあります。それぞれが Flask アプリケーションをホストします。どちらも Python 2.7.3 パスで実行されています。サーバーの 1 つで、"import simplejson" ステートメントに対して ImportError がスローされます。両方のサーバーのインタープリターは、このインポート ステートメントを問題なく受け入れます。

アプリケーション A のソースは次のとおりです。

  1 from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, views                                                                                                   
  2 import sys
  3 print sys.version
  4 print sys.path
  5 
  6 import os
  7 import functools
  8 import urllib,urllib2
  9 import simplejson
 10 from datetime import datetime, timedelta

そして、アプリケーション B のソース:

  1 from flask import Flask, request, session, g, redirect, url_for, abort, render_template, flash, views                                                                                                   
  2 
  3 import sys
  4 print sys.version          
  5 print sys.path             
  6 
  7 import simplejson  
  8 
  9 import functools

サーバー A の sys.version および sys.path ログ出力は次のとおりです。

2.7.3 (default, Aug  1 2012, 05:25:23) 
[GCC 4.6.3]
['/srv/www/A/env/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg',     
'/srv/www/A/env/local/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg',
'/srv/www/A/env/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg', 
'/srv/www/A/env/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg', 
'/srv/www/A/env/lib/python2.7', 
'/srv/www/A/20120910/src', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-linux2', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/srv/www/A/env/local/lib/python2.7/site-packages', 
'/srv/www/A/env/lib/python2.7/site-packages']
WSGI app 0 (mountpoint='notimportant.com|') ready in 1 seconds on interpreter 0x1b20420 pid: 11069

サーバー B の sys.version および sys.path ログ出力は次のとおりです。

2.7.3 (default, Aug  1 2012, 05:25:23) 
[GCC 4.6.3]
['/srv/www/B/env/local/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg', 
'/srv/www/B/env/local/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg', 
'/srv/www/B/env/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg', 
'/srv/www/B/env/lib/python2.7/site-packages/pip-1.2.1-py2.7.egg', 
'/srv/www/B/env/lib/python2.7', 
'/srv/www/B/20130105/src', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-linux2', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/srv/www/B/env/local/lib/python2.7/site-packages', 
'/srv/www/B/env/lib/python2.7/site-packages']

Traceback (most recent call last):
  File "/srv/www/B/20130105/src/B.py", line 7, in <module>
    import simplejson
ImportError: No module named simplejson
unable to load app 0 (mountpoint='notimportant.com|') (callable not found or import error)

建設的なアイデアを歓迎します。

4

1 に答える 1

4

simplejson外部ライブラリです。jsonモジュールとして Python 2.6 以降にバンドルされています。

import jsonの代わりにimport simplejson使用するsimplejson、サーバー Bにもインストールします。

simplejsonインポートをに置き換える場合jsonは、ファイル内の参照を修正することを忘れないでください。または、次のようにインポートします。

try:
    import simplejson
except ImportError:
    import json as simplejson

名前が変更されたstdlibjsonモジュールを使用し、へのすべての参照simplejsonは引き続き機能します。

于 2013-01-08T18:11:55.743 に答える