私はモジュール SEAPI.py を使用する崇高なテキスト2プラグインを作成しています---それ自体が requests module をインポートします。
崇高なテキスト2は独自の埋め込みpythonインタープリターを使用しているため、ubuntuマシンにインストールされているリクエストモジュールが表示されません(次のエラーが表示されます:ImportError:No named named requests)。
これまでに見つけた最善の解決策は、「リクエスト」モジュール(ファイルのディレクトリ全体)を/usr/lib/python2.7/dist-packages/requestsからプラグインディレクトリに、崇高なテキストパッケージディレクトリにコピーすることでした。しかしその後、「urllib3」モジュールが見つからないと表示されます。
すべてのファイルをプラグインディレクトリにコピーする必要がないように、requestsモジュールをインポートするより良い方法はありますか?
現在使用しているコードは次のとおりです。
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通訳。 ST2のpythonには、通常の2.7に存在するさまざまなモジュールがありませんpython( 'fileio'など))。
ここから「リクエスト」モジュールを使用して解決しました: https://github.com/bgreenlee/sublime-github
そして、「urllib3/response.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
Pythonパッケージに完全なリクエスト配布をバンドルし、次にrequests
フォルダーを含むフォルダーを指すようにPythonのsys.path
(モジュールを検索する場所)を変更する必要があります。
PyPiからリクエストライブラリをダウンロードし、プラグインフォルダーの下に手動で抽出する
プラグインでリクエストをインポートする前に、corrcetフォルダーをsys.pathに追加して、リクエストインポートを見つけることができるフォルダーをポイントします
(テストされていない)コードは次のようになります。
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
これは、setup.py
またはrequests
を使用してモジュールをインストールするときに、pip
easy_install
がハッキングを行わないことも前提としています。
Pythonは、リクエストが互換性のある方法で分散されていると仮定して、Zipファイルからのインポートをサポートしているため、requests
Zipを直接インポートすることもできます。例:(詳細):
https://github.com/miohtama/ztanesh/blob/master/zsh-scripts/python-lib/zipimporter.py
Sys.pathトリックの詳細(2004)
ミッコの答えは良いですが、少し簡単な方法を見つけたかもしれません:
import MyAwesomePlugin.requests
もちろん、「MyAwesomePlugin」はプラグインの名前です。