我最近设置了一个群集(1个主群集)
ImportError: No module named 'sklearn'
当我尝试使用sklearn的成对距离时,出现了一点巨大的错误日志
当我在worker上ssh并键入
python
>>> help('modules')
我可以看到所有的软件包都安装正确,所以这不是问题。
当我键入which python
时,我会得到一个路径,比如说/opt/conda/bin/python
,当我用echo$PYSPARK\u python
检查PYSPARK\u python时,我会得到相同的路径。由此我们可以推断spark使用的是python的“好”版本,它安装了所有的软件包。所以这不是问题所在。
我不明白为什么我的工作人员不能使用包,因为它们已经正确安装,而且PATHs变量似乎很好。
有什么线索吗?我有点迷茫和绝望,所以我可能遗漏了信息,请不要犹豫。
对于那些想知道的人,我一直遵循这个链接,直到第4步才在gcloud上设置我的环境PySpark。
好吧,所以我设法修好了它。
可以说,主要的“问题”是我作为集群上的用户进行了连接,并且我缺乏这样的特权,尤其是/pt/conda/
目录。
因此,当我使用pip
或conda
安装软件包时,它失败了。
我尝试使用带有--user
选项的pip
,它安装了东西,但不是我想要的地方。
在这一点上,我被激怒了,因为我不能像每个人告诉我使用pip
和conda
那样安装包,但是正如在最初的帖子中提到的,它们看起来已经被正确安装了。
由于特权使我无法有效地使用pip
和conda
,并且由于这是云中某个地方的虚拟机,我决定使用sudo chown
更改/opt/conda/
目录的ownershp...
作为/opt/conda/
的所有者,我也可以用conda
安装所有的软件包,并且它在安装之后就工作了。我的PySpark笔记本运行得很好。
我不推荐这个解决方案给在自己的私人机器上面临这个问题的用户,但我的问题是在谷歌云中的虚拟机上,仅用于PySpark,所以改变所有权的风险有一天会回到我身边,这是相当低的。
如果有人有更好更干净的解决方案,可以在这里发布。