2013-02-13 12 views
30

Google App Engine में तृतीय पक्ष पायथन पुस्तकालयों को कैसे जोड़ा जाए, जो Google द्वारा प्रदान नहीं किए जाते हैं? मैं Google ऐप इंजन में सुंदर सूप का उपयोग करने की कोशिश कर रहा हूं और ऐसा करने में असमर्थ हूं। लेकिन मेरा प्रश्न किसी भी लाइब्रेरी के लिए है जिसे मैं Google ऐप इंजन में उपयोग करना चाहता हूं।Google App Engine में तृतीय पक्ष पायथन पुस्तकालयों को कैसे शामिल करें?

+0

संभावित डुप्लिकेट [मैं Google App Engine के साथ तृतीय-पक्ष पायथन पुस्तकालयों का प्रबंधन कैसे करूं? (virtualenv? पीपी?)] (http://stackoverflow.com/questions/4863557/how-do-i-manage-third-party-python- पुस्तकालय-with-google-app-engine-virtualenv) – Wernight

उत्तर

43

असल में मुझे लगता है कि this answer यहां बेहतर फिट बैठता है।

यदि आप तृतीय पक्ष पुस्तकालयों का उपयोग करना चाहते हैं जो this list में शामिल नहीं हैं, तो आपको उन्हें मैन्युअल रूप से जोड़ना होगा।

मैन्युअल रूप से किसी भी अन्य पुस्तकालय को शामिल करने के लिए आपको निर्देशिका के अंदर रखना होगा जहां app.yaml रहता है। उदाहरण के लिए आप निम्नलिखित संरचना है यदि:

hello 
├── libs 
│ └── bs4 
├── hello.py 
└── app.yaml 

तो अपनी hello.py आप फ़ाइल की शुरुआत में इन दो पंक्तियों डाल करने के लिए है:

import sys 
sys.path.insert(0, 'libs') 

कर कि आप में सक्षम हो जाएगा के बाद किसी भी तृतीय पक्ष लाइब्रेरी का उपयोग करने के लिए जिसे आप libs निर्देशिका में डाल रहे हैं।

उदाहरण के लिए:

from bs4 import BeautifulSoup 
+0

इसे इसे libs –

+0

पर ले जाने के बाद काम करना पड़ेगा, मेरा बुरा, अंततः यह काम कर रहा है। धन्यवाद –

+0

दिशानिर्देशों का पालन करने के बाद भी मुझे इसके साथ समस्याएं आ रही हैं। क्या जीएई के साथ कुछ बदल गया है? –

0

बस अपनी परियोजना के रूट में BeautifulSoup रख दिया और यह सब

+0

क्या मैं डाल सकता हूँ यह कुछ विशिष्ट फ़ोल्डर जैसे - 'lib' में? –

+1

हां sys.path में हेरफेर करें या साइट मॉड्यूल का उपयोग करें 'site.addsitedir (' lib ') –

3

अपलोड आप बस पुस्तकालय आप अपने अनुप्रयोग इंजन परियोजना में उपयोग करना चाहते हैं युक्त फ़ोल्डर की प्रतिलिपि।

फिर जब आप इसे अपने आवेदन के साथ अपलोड करते हैं और उपयोग के लिए उपलब्ध होते हैं।

संपादित करें: Jesse's answer यह है कि मैं अब यह कैसे करता हूं। तो ऐसा करो!

1

जिस तरह से यह यहाँ काम किया है:

import sys 
# sys.path.insert(0, 'libs') #"Old" way, not working for me. 
sys.path.append(os.path.join(os.path.dirname(__file__), "libs")) # This works! 

तो सामान्य रूप से आयात:

from bs4 import BeautifulSoup 
50

गूगल शामिल तीसरे पक्ष के लिए एक दस्तावेज तरीका प्रदान की गई है आपके जीएई परियोजना में पुस्तकालय।

"Adding Third-party Packages to the Application" section of the Libraries in Python 2.7 docs देखें।

यदि आप अतिरिक्त शुद्ध-पायथन तीसरे पक्ष के पैकेज शामिल करना चाहते हैं, तो आप विक्रेता स्थापित करके ऐसा कर सकते हैं। विक्रेता आपको अपने प्रोजेक्ट की उपनिर्देशिका में पैकेज स्थापित करने की अनुमति देता है और उन्हें आपके कोड में शामिल करता है। विक्रेता का उपयोग करने के लिए, अपनी परियोजना की जड़ में appengine_config.py बनाएं (या संशोधित करें)।

from google.appengine.ext import vendor 
# Add any libraries installed in the "lib" folder. 
vendor.add('lib') 

और फिर बस में सभी अपने libs के स्रोत कोड डाल अपने lib dir

> pip install beautifulsoup4 -t lib 

तो अपनी परियोजना निर्देशिका संरचना इस तरह दिखता है:

project 
- lib 
    - bs4 
- your_code.py 

यह अनुमति देगा अपने प्रोजेक्ट की स्रोत फाइलें libs 'packages/modules आयात करने के लिए जैसे कि उन्हें आपके PYTHON_PATH में जोड़ा गया था। उदाहरण के लिए:

# file: your_code.py 
import bs4 # no need for 'from lib import bs4' 
# do stuff with bs4... 

तुम भी आसानी से सब कुछ एक requirements.txt फ़ाइल से निम्न आदेश

> pip install -t lib -r requirements.txt 
+2

यह उत्तर तब बेहतर होता है जब स्वीकार किया जाता है। धन्यवाद जेसी! –

+2

यह मेरे लिए लंबे समय तक काम करता था, लेकिन यह निष्पक्ष रूप से विफल होने लगा। अब मैं 'virtualenv' प्राप्त कर रहा हूं: lib का उपयोग नहीं कर सकता: ऐसी कोई वर्चुअलन या साइट निर्देशिका नहीं ' – bgenchel

+0

मुझे अभी भी वही चीज़ मिल रही है। अजीब। –

0

पिप करके स्थापित स्थापित कर सकते हैं आयकर lib PACKAGE_NAME

lib: तीसरे पक्ष के पुस्तकालयों के लिए स्थान

फिर आप अच्छे हैं इस पैकेज का उपयोग सामान्य लाइब्रेरी की तरह करें जिसे आप ipython या टर्मिनल से उपयोग करते हैं।