当前位置: 首页 > 面试题库 >

如何在Sublime Text 2插件中包含第三方Python软件包

尉迟浩思
2023-03-14
问题内容

我正在编写一个使用模块SEAPI.py的sublime text
2插件,该插件本身会导入请求模块。

由于sublime text2使用它自己的嵌入式python解释器,因此看不到我的ubuntu机器上安装的请求模块(我收到以下错误:ImportError:没有名为请求的模块)。

到目前为止,我能找到的最佳解决方案是将“请求”模块(文件的整个目录)从/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
...

编辑: 选择的答案是正确的,可以解决我的主要问题,但是使用当前版本的“请求”以及嵌入的Sublime Text
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软件包捆绑在一起,然后修改Python
sys.path(用于查找模块的位置)以指向包含requests文件夹的文件夹。

  • 从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

这也假设requests setup.py您使用easy_install或安装模块时不会受到任何干扰pip

您也可以requests直接导入zip,因为Python支持从ZIP文件导入,假设请求以兼容的方式分发。示例(高级):

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



 类似资料:
  • 问题内容: 我正在开发我的第一个Java应用程序,它实际上需要一个3rd party软件包,但现在我迷失了如何实际使用它。我需要的软件包来自VLCJ,因此我可以将媒体播放器嵌入GUI中。 通常,我只能导入包和类,但是使用第三方包可以吗?他们有一个.jar文件可以在他们的网站上下载,软件包是否存储在其中?如果是这样,我该如何在自己的应用程序中使用它们? 问题答案: 您只需要将第三方JAR放在项目的类

  • 问题内容: 寻找golang软件包如何积极地增长和改进,我想知道软件包版本的问题如何解决? 我看到一种方法是将第三方程序包存储在项目文件夹下。 但是,如果我将其安装在一起怎么办? 问题答案: 会将软件包安装在列出的第一个目录中(环境变量可能包含用冒号分隔的目录列表)。您可以用来更新现有软件包。 您还可以用来更新您的所有软件包 对于较大的项目,为每个项目创建不同的GOPATH可能是合理的,因此更新项

  • 问题内容: 我正在尝试在Hadoop流作业中包括一个python软件包(NLTK),但不确定如何通过CLI参数“ -file”手动不包括每个文件来执行此操作。 编辑:一种解决方案是在所有从站上安装此软件包,但是我目前没有该选项。 问题答案: 我会将软件包压缩为a或a,然后将整个tarball或归档文件作为选项传递给hadoop命令。过去我是用Perl做到的,而Python却没有。 也就是说,如果你

  • 问题内容: 如何在Google App Engine中添加Google不提供的第三方python库?我正在尝试在Google App Engine中使用BeautifulSoup,但无法这样做。但是我的问题是我想在Google App Engine中使用的任何库。 问题答案: 为了手动包括任何其他库,你必须将它们放在其中的目录中app.yaml。因此,例如,如果你具有以下结构: 然后hello.p

  • 问题内容: 使用setuptools时,无法让安装程序提取任何文件。我读过的所有内容都表明,以下是正确的方法。有人可以请教吗? 数据文件的位置在哪里。 问题答案: 我知道这是一个老问题,但人们发现这里通过谷歌自己的方式: 是低了下来,肮脏的谎言。它仅在构建 二进制 软件包()时使用, 而 在构建源软件包()时不使用。当然,这是荒谬的-人们希望构建源代码分发将导致文件的集合,这些文件可以发送给其他人

  • FreeBSD 的发行版中, 可能有某些部分包含在 FreeBSD 项目之外活跃地维护着的软件。由于历史原因, 我们将其称为 contributed 软件。 举例说来, 有 sendmail、 gcc 和 patch 等等。 在过去几年中, 我们尝试了许多不同的方法来处理这类软件, 这些方法都各有利弊, 因而也就没有明确的胜者。 基于这种情况, 在经历了一些争吵之后, 我们选定了一种作为在未来引入