2012-04-19 20 views
5

मैं Google App Engine में नया हूं और इसलिए, मैंने अभी एक एप्लिकेशन का परीक्षण करने की प्रक्रिया का पालन किया है जो सिर्फ "हैलो वर्ल्ड" प्रिंट करता है।Google App Engine परीक्षण प्रोजेक्ट चलाते समय आयात त्रुटि

परियोजना फ़ोल्डर का नाम है "GoogleApp"

यह मेरा पायथन फ़ाइल है (गूगल एप इंजन प्रलेखन के अनुसार इसके बाद):

फ़ाइल नाम: sayHello.py

#!/usr/bin/env python 

def main(): 
    print "hello" 
    pass 

if __name__ == '__main__': 
    main() 

यह yaml फ़ाइल

फ़ाइल ना मुझे: app.yaml

application: GoogleApp 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: sayHello.py 

जब कभी मैं सिर्फ गूगल एप इंजन लांचर में परियोजना चलाने के लिए, यह लॉग त्रुटि मैं

2012-04-19 10:52:23 Running command: "['C:\\Python27\\pythonw.exe', 'C:\\Program Files\\Google\\google_appengine\\dev_appserver.py', '--admin_console_server=', '--port=8080', 'D:\\Code\\Projects\\IRCmathBot\\GoogleApp']" 
Traceback (most recent call last): 
    File "C:\Program Files\Google\google_appengine\dev_appserver.py", line 125, in <module> 
    run_file(__file__, globals()) 
    File "C:\Program Files\Google\google_appengine\dev_appserver.py", line 121, in run_file 
    execfile(script_path, globals_) 
    File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver_main.py", line 157, in <module> 
    from google.appengine.tools import appcfg 
    File "C:\Program Files\Google\google_appengine\google\appengine\tools\appcfg.py", line 41, in <module> 
    import mimetypes 
    File "C:\Python27\lib\mimetypes.py", line 29, in <module> 
    import urllib 
    File "C:\Python27\lib\urllib.py", line 26, in <module> 
    import socket 
    File "C:\Python27\lib\socket.py", line 47, in <module> 
    import _socket 
ImportError: Module use of python25.dll conflicts with this version of Python. 
2012-04-19 10:52:25 (Process exited with code 1) 

वास्तव में हो रही है, मैं अजगर 2.7 का उपयोग करें। उपर्युक्त लॉग कहता है कि python25.dll अजगर के संस्करण के साथ संघर्ष करता है।

मैं नहीं जानता कि वास्तव में क्या इसका मतलब है, लेकिन मैं समझ सकती

  1. यह या तो केवल अजगर 2.5 या
  2. यह
  3. मैं अजगर 2.5 कोड का इस्तेमाल किया है चाहिए समर्थन करना चाहिए।

दूसरे के रूप में संभव नहीं है और Google 2.7 का समर्थन करता है, मुझे नहीं पता कि यह त्रुटि क्या है।

खुद को समझने की कोशिश करें लेकिन सफल नहीं हो सका।

उत्तर

0

कुछ आपके गंभीर रूप से आपके पायथन 2.7 स्थापना के साथ टूटा हुआ है - इसके कुछ हिस्से पाइथन 2.5 पुस्तकालयों का संदर्भ दे रहे हैं। आपको अपनी मशीन पर पाइथन के सभी संस्करणों को अनइंस्टॉल करना चाहिए, और आपको जिस संस्करण की आवश्यकता है उसे पुनर्स्थापित करना चाहिए।

+0

यह Python 2.7 इंस्टॉल में कोई समस्या नहीं है - यह लॉन्चर के साथ एक समस्या है। –

+0

@techtonik लॉन्चर पाइथन को बंडल नहीं करता है (या कम से कम, नहीं); मुद्दा पायथन के साथ ही था। –

+0

लॉन्चर bundled python25.dll के बिना काम नहीं करेगा, क्योंकि यह इस lib के खिलाफ संकलित wxPython बाइंडिंग का उपयोग करता है। –

1

आपके पास थ्रेडसेफ सक्षम है, इसलिए आपको डब्लूएसजीआई हैंडलर का उपयोग करना चाहिए। यह समस्या हो सकती है। , App.yaml

application: GoogleApp 
version: 1 
runtime: python27 
api_version: 1 
threadsafe: true 

handlers: 
- url: /.* 
    script: helloworld.app 

यदि गूगल AppEngine पर Python2.7 उपयोग करते हुए इस अधिकारी का संदर्भ लें:

फ़ाइल:: helloworld.py

import webapp2 

class MainPage(webapp2.RequestHandler): 
    def get(self): 
     self.response.headers['Content-Type'] = 'text/plain' 
     self.response.out.write('Hello, WebApp World!') 

app = webapp2.WSGIApplication([('/', MainPage)]) 

फ़ाइल के साथ मैं निम्नलिखित अपने कोड की जगह लेंगे अपना पहला "हैलो वर्ल्ड" एप्लिकेशन बनाने के लिए documentation

+0

मैंने थ्रेडसेफ स्टेटमेंट के बिना भी कोशिश की। हालांकि, यह काम नहीं किया !! – Surya

+0

आपने अपना कोड किस आधार पर रखा था? यदि आप Python2.7 का उपयोग कर रहे हैं, तो प्रारंभ करने के लिए आधिकारिक दस्तावेज https://developers.google.com/appengine/docs/python/gettingstartedpython27/helloworld है ... आपके द्वारा प्रदान किया गया कोड आपके जैसा नहीं दिखता है उन दस्तावेज़ों से। शायद आप इसे Python25 दस्तावेज़ों पर आधारित करते हैं। – Albert

+0

असल में, "हेड फर्स्ट पायथन" से .. – Surya

2

क्या आपने कमांड लाइन में प्रयास किया है? लॉन्चर भूल जाओ। मुझे एक ही समस्या थी! मैंने पाइथन को कई बार फिर से स्थापित किया, संस्करण बदल दिया। यह आनंददायक था। संस्करण 2.5 लॉन्चर सर्वर से शुरू कर सकता है, लेकिन एप्लिकेशन काम नहीं करता है, लेकिन मैं इसे लॉन्चर के माध्यम से ऑनलाइन अपलोड कर सकता हूं। पाइथन वर्क के साथ । 2.7, लॉन्चर उसी समस्या को प्रदर्शित करता है जिसके साथ आप काम कर रहे हैं। मैं सर्वर को स्थानीय रूप से शुरू नहीं कर सकता। लेकिन कमांड लाइन अच्छी तरह से काम करती है, सर्वर को स्थानीय रूप से शुरू करने और ऑनलाइन अपलोड करने दोनों। तो मैं संस्करण 2.7 के साथ रहूंगा। उम्मीद है कि यह मदद करता है, मुझे बताओ ..

5

मुझे एक बहुत ही समान समस्या थी (ट्यूटोरियल कोड चलाते समय), और इसे मेरे पायथनपैथ सिस्टम पर्यावरण परिवर्तक की जांच करके हल किया गया।

मेरे लिए, ओपनसीवी ने पाइथनपैथ वैरिएबल को बेस पायथन इंस्टॉलेशन के बजाय अपनी निर्देशिका संरचना को इंगित करने के लिए संपादित किया।

आप 'उन्नत सिस्टम गुण' विंडो खोलकर और 'पर्यावरण चर' बटन पर क्लिक करके पर्यावरण चर संपादित कर सकते हैं। 'सिस्टम वैरिएबल' के तहत 'पायथनपैथ' चर। कम से कम, इसमें आपके पायथन निष्पादन योग्य पथ, जैसे कि 'सी: \ पायथन 27 \' पथ शामिल होना चाहिए।

+0

मुझे PythonPATH के साथ एक ही समस्या थी। मेरी स्थिति में, मैपनिक के लिए एक लिंक है। जब मैंने लिंक हटा दिया, तो Google App Engine अच्छा काम करता है। –

0

मुझे लगता है कि आपने पर्यावरण परिवर्तनीय पथ में जीएई पथ जोड़ा है? बस इसे हटा दें।

मैं तुम्हारे साथ बिल्कुल वैसा ही समस्या थी, मुझे लगता है कि अजगर 2.7 GAE पथ के अंतर्गत कोई गलत _socket.pyd lib उपयोग करने के लिए, पथ से GAE पथ को हटाने ठीक कर देंगे की कोशिश करेंगे।

इसे आपके अतिरिक्त ओएस की एक छोटी सी विन्यास, अतिरिक्त कोडिंग की आवश्यकता नहीं है। चूंकि मेरे ओएस भाषा चीनी है, प्रतीक/लिंक के नाम के नीचे अपने आप से चीनी, से अनुवाद किया जाता है जो मैं सही :(

  1. ठीक है, "कंप्यूटर" आइकन पर क्लिक 'गुण' का चयन होने की गारंटी नहीं दे सकते, आपको कुछ बुनियादी सिस्टम जानकारी दिखाते हुए सिस्टम पैनल दिखाई देगा;
  2. "उन्नत सिस्टम सेटिंग्स" लिंक पर क्लिक करें, आपको सिस्टम टैब पैनल में कई टैब होंगे;
  3. "उन्नत" टैब चुनें, वहां होना चाहिए नीचे "पर्यावरण चर" नामक एक बटन बनें, उस पर क्लिक करें, फिर आप अपने सिस्टम के सभी पर्यावरण चर प्रदर्शित करने वाला एक संवाद देख सकते हैं;
  4. "पाथ" या "पथ" नामक चर को ढूंढें और संपादित करें (केस असंवेदनशील): यदि उसके मान में आपके GAE का पथ है, तो GAE पथ को हटा दें।
+2

वास्तव में कैसे? क्या आप कुछ कोड दिखा सकते हैं? – Surya

1

मैंने इसे 3 घंटे के प्रयास के बाद तय किया। पुनर्स्थापित मेरी समस्या का समाधान नहीं कर सकता है, उपयोगकर्ता/सिस्टम पर्यावरण परिवर्तक के आसपास गड़बड़ भी काम नहीं करता है। इस कदम काम का पालन करें:

Google डिस्क खोलें Perference, जीत के बाद स्वत: चलने बंद कर देते हैं कि Google डिस्क बंद बारी शुरू या बस गूगल ड्राइव की स्थापना रद्द करें (Google डिस्क अजगर 2.5 _socket लाइब्रेरी का उपयोग कर

स्थापना रद्द करें अजगर लगता है और GAE रिबूट python27 और GAE स्थापित सबसे महत्वपूर्ण बात, एक नया पथ निर्दिष्ट, डिफ़ॉल्ट ग का उपयोग नहीं करते: फिर \ python27 (मैं इसे ग के लिए बदल दिया:। \ mypython27 GAE के रूप में ही, एक नया पथ का उपयोग

। फिर यह फिर से काम करता है।

0

मेरे लिए यह था कि मैंने सिस्टम वैरिएबल पायथनपैथ को '।' पर सेट किया था। चर को हटाने से नौकरी हुई!\ Program Files \ Google \ google_appengine; C:

0

मैं "सी

को PYTHON_PATH सेट \ Program Files \ Google \ google_appengine \ lib \ antlr3; C: \ Program Files \ Google \ google_appengine \ lib \ django_0_96; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ fancy_urllib; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ graphy; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ ipaddr; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ simplejson; सी: \ प्रोग्राम फ़ाइलें \ Google \ go ogle_appengine \ lib \ webob; C: \ Program Files \ Google \ google_appengine \ lib \ YAML \ lib "

लेकिन फिर मुझे लगता है कि Django 0.96 अजगर 2.5 की आवश्यकता होती है, तो Django 1.4 का उपयोग करें, और यह ठीक काम करता है।

"C: \ Program Files \ Google \ google_appengine; C: \ Program Files \ Google \ google_appengine \ lib \ antlr3; C: \ Program Files \ Google \ google_appengine \ lib \ Django-1.4 ; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ fancy_urllib; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ graphy; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ ipaddr; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ simplejson; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ webob; सी: \ प्रोग्राम फ़ाइलें \ Google \ google_appengine \ lib \ yaml \ lib "

यदि आपके ऊपर उपरोक्त समस्या है, तो यह देखने के लिए कि पैथ, PYTHON_PATH को लाइब्रेरी और पायथन के बीच मेल नहीं मिला है या नहीं। उममीद है कि इससे मदद मिलेगी।

0

कुछ प्रोग्राम PYTHONPATH पर्यावरण चर को संशोधित कर सकते हैं। यदि आप इसकी मान (सिस्टम -> पर्यावरण चर) जांचते हैं और सुनिश्चित करते हैं कि यह सही पायथन 2.7 पथ (डिफ़ॉल्ट सी: \ पायथन 27) पर सेट है तो यह समस्या को ठीक करना चाहिए। मेरे मामले में कुछ ने इसे मेरे Google एपेंगेन पथ पर सेट किया था।

0
ImportError: Module use of python25.dll conflicts with this version of Python. 

समस्या यह है कि आपके अजगर 2.7 स्थापना के साथ python25.dll विरोध करता है। यह python25.dll विंडोज के लिए बहुत पुराना Google अनुप्रयोग इंजन लांचर से आता है और C:\Program Files\Google\google_appengine\launcher

में स्थित है यह अपने अजगर 2.7 की एक समस्या नहीं है स्थापित - यह लांचर की समस्या, जो ऐप्स को वातावरण में अपने आप ही अजगर पथ injects है। कि परीक्षण करने के लिए, पहले के आयात के बाद google_appengine/dev_appserver.py के शीर्ष पर निम्न पंक्तियां जोड़ें:

from pprint import pprint 
pprint(sys.path) 

तो फिर से चलाने के आप अनुप्रयोग ताजा लॉग हो जाते हैं और खुद के लिए देखने के लिए:

... 
'C:\\OpenCV2.3\\opencv\\build\\python\\2.7', 
'C:\\Google\\google_appengine\\launcher', 
'C:\\Windows\\system32\\python27.zip', 
'C:\\Python27\\DLLs', 
... 

मैं लांचर मिला पायथन से .msi एसडीके 1.8.8, और यह निश्चित रूप से suxx है कि Google अभी भी टूटी हुई GUI उपकरण के साथ एसडीके के कई संस्करणों को भेजता है। कि ठीक करने के लिए, dev_appserver.py में पहली आयात के बाद निम्नलिखित जोड़ें:

# --- Repair sys.path after broken GAE Windows Launcher 
# see http://stackoverflow.com/questions/10222342/ 
ROOT = os.path.abspath(os.path.dirname(__file__)) 
LAUNCHPATH = os.path.join(ROOT, 'launcher') 
if LAUNCHPATH in sys.path: 
    sys.stderr.write('[BUG] GAE Windows Launcher detected. Fixing..\n') 
    sys.path.remove(LAUNCHPATH) 
# /-- 

दुर्भाग्य से, आप प्रक्रिया को दोहराने के लिए जब GAE का नया संस्करण बाहर आता आवश्यकता होगी।AppEngine ट्रैकर पर issue #8568 है कि आप इसे किसी दिन तय करने के लिए तारांकित और टिप्पणी कर सकते हैं।

0

क्या आपके पास पर्यावरण चर में PythonPATH चर है? इसे हटाएं और Google ऐप इंजन लॉन्चर को पुनरारंभ करें, यह काम करेगा!