python - सब्लिमे टेक्स्ट 2 प्लगइन्स में तृतीय पक्ष पायथन पैकेज कैसे शामिल करें



plugins sublimetext2 distutils python-requests (3)

मिक्को का जवाब अच्छा है, लेकिन मुझे थोड़ा आसान तरीका मिल सकता है:

import MyAwesomePlugin.requests

"MyAwesomePlugin" निश्चित रूप से आपकी प्लगइन का नाम है।

मैं एक शानदार टेक्स्ट 2 प्लगइन लिख रहा हूं जो एक मॉड्यूल SEAPI.py का उपयोग करता है जो स्वयं अनुरोध मॉड्यूल आयात करता है

चूंकि शानदार टेक्स्ट 2 अपने स्वयं के एम्बेडेड पायथन दुभाषिया का उपयोग करता है, इसलिए यह मेरे यूबंटू मशीन में स्थापित अनुरोध मॉड्यूल नहीं देखता है (मुझे निम्न त्रुटि मिलती है: आयात त्रुटि: अनुरोध मॉड्यूल अनुरोध नहीं)।

सबसे अच्छा समाधान मैं अब तक प्राप्त कर सकता था 'अनुरोध' मॉड्यूल (फाइलों की पूरी निर्देशिका) को /usr/lib/python2.7/dist-packages/requests से मेरी प्लगइन निर्देशिका में उत्कृष्ट पाठ पैकेज dir में कॉपी करना था। लेकिन उसके बाद, यह कहता है कि इसे 'urllib3' मॉड्यूल नहीं मिल रहा है।

अनुरोध मॉड्यूल आयात करने का कोई बेहतर तरीका है ताकि मुझे सभी फाइलों को मेरी प्लगइन निर्देशिका में कॉपी नहीं करना पड़ेगा?

मैं जिस मौजूदा कोड का उपयोग कर रहा हूं वह इस प्रकार है:

MyPlugin.py

import sublime
import sublime_plugin
import SEAPI
...

SEAPI.py

import requests
try:
    import simplejson as json
except:
    import json
from time import time, sleep
...

संपादित करें: चयनित उत्तर सही है और मेरे मुख्य प्रश्न को ठीक करता है, लेकिन एम्बेडेड सब्लिमे टेक्स्ट 2 दुभाषिया के साथ 'अनुरोध' के वर्तमान संस्करण का उपयोग करने के साथ एक अलग समस्या मौजूद है। एसटी 2 के पायथन में विभिन्न मॉड्यूल गायब हैं जो नियमित 2.7 पायथन (जैसे 'फाइलियो') में मौजूद हैं।

मैंने इसे यहां से 'अनुरोध' मॉड्यूल का उपयोग करने के साथ हल किया है: https://github.com/bgreenlee/sublime-github

और मुझे इसे 'urllib3 / respond.py' फ़ाइल को संपादित करना था:

try:
    from cStringIO import StringIO as BytesIO
except ImportError:
    pass  # _fileio doesn't seem to exist in ST's python in Linux, but we don't need it

आपको अपने पायथन पैकेज के साथ पूर्ण अनुरोध वितरण को बंडल करने की आवश्यकता है और फिर requests फ़ोल्डर वाले फ़ोल्डर को इंगित करने के लिए पाइथन के sys.path (जहां यह मॉड्यूल की तलाश करता है) को संशोधित करने की sys.path

  • एक पीपीपीआई से अनुरोध लाइब्रेरी डाउनलोड करें और इसे अपने प्लगइन फ़ोल्डर के तहत मैन्युअल रूप से निकालें

  • अपनी प्लगइन में अनुरोध आयात करने से पहले , एक फ़ोल्डर को इंगित करने के लिए corspath में corrpet फ़ोल्डर को संलग्न करें जहां यह अनुरोध आयात कर सकता है

(अवांछित) कोड इस तरह कुछ दिखना चाहिए:

  import sys 
  import os

  # request-dists is the folder in our plugin
  sys.path.append(os.path.join(os.path.dirname(__file__), "requests-dist"))

  import requests

यह भी मानता है कि जब आप easy_install या pip का उपयोग कर मॉड्यूल स्थापित करते हैं तो setup.py कोई हैक नहीं करता है।

आप requests ज़िप को सीधे आयात कर सकते हैं क्योंकि पाइथन ज़िप फ़ाइलों से आयात करने का समर्थन करता है, मानते हैं कि अनुरोध संगत तरीके से वितरित किए जाते हैं। उदाहरण (उन्नत):

https://github.com/miohtama/ztanesh/blob/master/zsh-scripts/python-lib/zipimporter.py

Sys.path चाल के बारे में अधिक जानकारी (2004)

http://www.johnny-lin.com/cdat_tips/tips_pylang/path.html


और पूर्णता के लिए, यह len() फ़ंक्शन का उपयोग किए बिना संभव है (मैं इसे एक अच्छा विकल्प के रूप में नहीं मानूंगा):

def count(list):
  item_count = 0
  for item in list[:]:
    item_count = item_count + 1
  return item_count

count([1,2,3,4,5])

( list[:] में कोलन list[:] निहित है, इसलिए वैकल्पिक भी)





python plugins sublimetext2 distutils python-requests