【问题标题】:Running Map/Reduce python programs from Sublime Text 2从 Sublime Text 2 运行 Map/Reduce python 程序
【发布时间】:2016-01-11 19:22:37
【问题描述】:

我刚刚开始了一个关于 map reduce 和 Hadoop 的教程系列。设置说明要求将名为 Canopy 的 IDE 与 MRjob 一起使用。我都安装了,一切正常。但是......如果 Canopy 只是一个 Python IDE,我不能在它的位置使用任何东西(例如 intellij 或 Sublime Text)吗?

当我在 Sublime Text 中运行相同的 python 脚本时,我收到以下错误:

Traceback (most recent call last):
   File "../Rating-Counter.py", line 1, in <module> from mrjob.job import MRJob
ImportError: No module named mrjob.job

这是脚本:

from mrjob.job import MRJob

class MRRatingCounter(MRJob):
    def mapper(self, key, line):
        (userID, movieID, rating, timestamp) = line.split('\t')
        yield rating, 1

    def reducer(self, rating, occurences):
        yield rating, sum(occurences)

if __name__ == '__main__':
    MRRatingCounter.run()

我刚刚为 MRjob 使用了 pip install,有什么地方可以进行自定义安装并将其放在 Sublime Text 可以看到的地方吗?我有多个版本的python,会不会是pip为2.7而不是3.4安装了MRjob?

更新:我尝试使用 pip3 install MRjob 并返回此错误:

命令“python setup.py egg_info”失败,错误代码 1 在 /private/var/folders/gj/h8lrdpmx7lg3bq2_9t9j5kbr0000gn/T/pip-build-le53azna/MRjob

【问题讨论】:

  • IDE 通常有一些额外的设置来告诉它使用哪个 python 可执行文件,并使用系统 PATH 变量来确定你安装的 Python 包的位置。很可能 Sublime Text 不知道你安装的包
  • 从命令行运行以下命令的结果是什么? import mrjob; print(mrjob.__file__)?
  • @MattDMo 如果我启动 python3 并运行代码,我会收到未安装 MRjob 的错误。
  • 好的,所以它是用 Python 2.7 安装的。
  • @MattDMo 那么有没有办法指定为哪个 python 安装它?

标签: python sublimetext2 mrjob


【解决方案1】:

虚拟环境:

virtualenv 是一个创建隔离 Python 环境的工具。 virtualenv 创建一个文件夹,其中包含所有必要的可执行文件,以使用 Python 项目所需的包。

通过 pip 安装 virtualenv:

$ pip install virtualenv

基本用法 为项目创建虚拟环境:

$ cd my_project_folder
$ virtualenv venv

virtualenv venv 将在当前目录中创建一个文件夹,该文件夹将包含 Python 可执行文件,以及可用于安装其他包的 pip 库的副本。虚拟环境的名称(在本例中为 venv)可以是任何名称;省略名称会将文件放在当前目录中。

这会在您运行命令的任何目录中创建 Python 的副本,并将其放置在名为 venv 的文件夹中。

您也可以使用您选择的 Python 解释器。

$ virtualenv -p /usr/bin/python2.7 venv

这将使用 /usr/bin/python2.7 中的 Python 解释器

要开始使用虚拟环境,需要激活它:

$ source venv/bin/activate

当前虚拟环境的名称现在将出现在提示符的左侧(例如 (venv)Your-Computer:your_project UserName$),让您知道它处于活动状态。从现在开始,您使用 pip 安装的任何包都将放在 venv 文件夹中,与全局 Python 安装隔离。

照常安装包,例如:

$ pip install requests

如果您暂时完成了在虚拟环境中的工作,您可以将其停用:

$ deactivate

这会让您回到系统的默认 Python 解释器及其所有已安装的库。

要删除虚拟环境,只需删除其文件夹即可。 (在这种情况下,它将是 rm -rf venv。)

不过,一段时间后,您的系统中可能会出现大量虚拟环境,您可能会忘记它们的名称或放置位置。

引用自:

http://docs.python-guide.org/en/latest/dev/virtualenvs/

这将完全满足您的要求,并且是针对同一台机器上的不同 python 要求而设计的。效果很好。

【讨论】:

  • @mikeb 你确定这是一个很好的答案吗?要么只给提问者一个链接,要么给提问者一堵文字墙,你可能会让他感到困惑。对这个问题多适应一点怎么样。
  • 这是一个永久的解决方案吗?我必须为每个程序都这样做吗?
  • @StillLearningToCode 这不是一个好的解决方案。你不需要 virtualenv,你只需要一个合适的 .sublime-build 文件。
猜你喜欢
  • 2012-01-23
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 2016-02-22
  • 1970-01-01
相关资源
最近更新 更多