2012-01-21 25 views
5

पर अपग्रेड के बाद अंतःक्रियात्मक रूप से क्रैश हो गया है मैंने हाल ही में अपने जीएई पायथन ऐप को पायथन 2.7 में अपग्रेड किया है। तब से, मैं समय-समय पर देव सर्वर के साथ निम्न त्रुटि हो और डेव सर्वर को एक रिक्त पृष्ठ के ऊपर कार्य करता है:GAE पायथन देव सर्वर 2.7

Traceback (most recent call last): 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 168, in Handle 
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler()) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 206, in _LoadHandler 
    handler = __import__(path[0]) 
    [...] 
    File "/Users/joneill/OpenSTV/OpenSTV/trunk/OpaVote-HR/main.py", line 2, in <module> 
    import views 
    [...] 
    File "/Users/joneill/OpenSTV/OpenSTV/trunk/OpaVote-HR/views.py", line 3, in <module> 
    from pytz.gae import pytz 
    [...] 
    File "/Users/joneill/OpenSTV/OpenSTV/trunk/OpaVote-HR/pytz/__init__.py", line 34, in <module> 
    from pkg_resources import resource_stream 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 662, in Decorate 
    return func(self, *args, **kwargs) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1818, in load_module 
    return self.FindAndLoadModule(submodule, fullname, search_path) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 662, in Decorate 
    return func(self, *args, **kwargs) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1690, in FindAndLoadModule 
    description) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 662, in Decorate 
    return func(self, *args, **kwargs) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1615, in LoadModuleRestricted 
    return source_file.load_module(submodule_fullname) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/dist/py_zipimport.py", line 246, in load_module 
    submodname, is_package, fullpath, source = self._get_source(fullmodname) 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/dist/py_zipimport.py", line 207, in _get_source 
    source = self.zipfile.read(relpath.replace(os.sep, '/')) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 867, in read 
    return self.open(name, "r", pwd).read() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/zipfile.py", line 882, in open 
    zef_file = open(self.filename, 'rb') 
    File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 578, in __init__ 
    raise IOError(errno.EACCES, 'file not accessible', filename) 
IOError: [Errno 13] file not accessible: '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg' 
INFO  2012-01-21 20:50:44,222 dev_appserver.py:2832] "POST /manage HTTP/1.1" 500 - 

कुछ नोट:

  • यह उत्पादन सर्वर पर नहीं होता है।
  • dev सर्वर पर, मेरा ऐप कुछ मिनट के लिए काम करेगा और फिर यह त्रुटि होती है।
  • यदि मैं dev सर्वर पर अपना ऐप रोकता हूं और पुनरारंभ करता हूं, तो यह कुछ मिनटों के लिए फिर से काम करेगा।
  • मैं gae-pytz का नवीनतम संस्करण उपयोग कर रहा हूं और आप देख सकते हैं कि यह वहां आयात में विफल रहता है।
  • [...] जो मैंने हटा दिया है वह अंत में दिखाई देने वाली सामग्री के समान है।
  • मुझे नहीं पता कि अंत में setuptools क्यों बुलाया जा रहा है।
  • मैं शेर के साथ एक मैक का उपयोग कर रहा हूँ।

मैं देव सर्वर का उपयोग कर सकता हूं, लेकिन यह हर कुछ मिनटों को रोकने और फिर से शुरू करने के लिए वास्तव में परेशान है। इसे ठीक करने का कोई तरीका?

+0

अभी भी नवीनतम पायथन और देव सर्वर के साथ एक ही समस्या है। –

उत्तर

1

स्टैक ट्रेस से वास्तविक समस्या, क्या आपका कोड साइट-पैकेज से सेटअप टूल आयात करने का प्रयास कर रहा है, जो dev सर्वर नहीं करेगा।

'/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg'

आप में setuptools शामिल करने के लिए की आवश्यकता होगी आप आवेदन कोड आधार। तथ्य यह है कि यह कभी-कभी काम करता है, यह बताता है कि आप विभिन्न मॉड्यूल के माध्यम से कोड पथ अलग-अलग होते हैं, और शायद (देव में आपके टेसिंग के आधार पर) विभिन्न आयात आदेशों का मतलब है कि सेटअप उपकरण कहीं और आयात किए गए हैं, या केवल आपके कोड में कुछ बिंदुओं पर आवश्यक है ।

स्टैक ट्रेस की लाइन चौथी पंक्ति पर एक नज़र डालें जहां pytz आयात किया जाता है, अगली पंक्ति pkg_resources आयात संसाधन_स्ट्रीम से होती है जो कि बाकी आयात समस्या को ट्रिगर करता है। मैं अपने प्रोजेक्ट की जड़ पर नकली कटा हुआ pkg_resources का उपयोग करता हूं, जो सेटअप टूल से सामान आयात करने का प्रयास नहीं करता है। आप डिबग आयात मोड में dev सर्वर चला सकते हैं जो आपको बहुत अधिक

यहां एक नकली pkg_resources है।

"""Package resource API 
-------------------- 

A resource is a logical file contained within a package, or a logical 
subdirectory thereof. The package resource API expects resource names 
to have their path parts separated with ``/``, *not* whatever the local 
path separator is. Do not use os.path operations to manipulate resource 
names being passed into the API. 

The package resource API is designed to work with normal filesystem packages, 
.egg files, and unpacked .egg files. It can also work in a limited way with 
.zip files and with custom PEP 302 loaders that support the ``get_data()`` 
method. 
""" 

import sys, os, zipimport, time, re, imp, new 

try: 
    frozenset 
except NameError: 
    from sets import ImmutableSet as frozenset 

from os import utime #, rename, unlink # capture these to bypass sandboxing 
from os import open as os_open 

ऐसा करने के शायद अन्य/बेहतर तरीके हैं, लेकिन यह मेरे लिए काम करता है।

ओह, मैं यह भी सुझाव दूंगा कि आप pytz के बजाय http://code.google.com/p/gae-pytz/ का उपयोग करें।

चीयर्स

+0

हमम ... मैं अपने ऐप में setuptools का उपयोग नहीं कर रहा हूं इसलिए मुझे नहीं पता कि यह क्यों और कहाँ आयात किया जा रहा है। –

+0

स्टैक ट्रेस की लाइन चौथी पंक्ति पर एक नज़र डालें जहां pytz आयात किया जाता है, अगली पंक्ति pkg_resources आयात संसाधन_स्ट्रीम से होती है जो कि बाकी आयात समस्या को ट्रिगर करता है। मैं अपने प्रोजेक्ट की जड़ पर नकली कटा हुआ pkg_resources का उपयोग करता हूं, जो सेटअप टूल से सामान आयात करने का प्रयास नहीं करता है। आप डिबग आयात मोड में dev सर्वर चला सकते हैं जो आपको बहुत कुछ बताएगा। –

+0

धन्यवाद! यह वास्तव में उपयोगी लग रहा है। क्या gae-pytz के लिए '__init __। Py' फ़ाइल में 'pkg_resources आयात संसाधन_स्ट्रीम' से' टिप्पणी करना आसान होगा? –

0

उपर्युक्त के लिए एक वैकल्पिक उत्तर जिसे मैं पसंद करता हूं।

#try: 
# from pkg_resources import resource_stream 
#except ImportError: 
resource_stream = None 

मैं बाहर पहली तीन पंक्तियों टिप्पणी की और कहा कि यदि समस्या ठीक:

pytz के लिए __init__.py फ़ाइल निम्नलिखित लाइनों में शामिल है।