从 scala 执行 python 脚本给出错误,而 运行 从命令行执行相同的脚本不会

Executing a python script from scala giving error while running the same script from the command line does NOT

这是我的 python 脚本:

!/usr/bin/python
   import sys
   import magic
   m=magic.from_file('<file with absolute path goes here>')
   print(m)

在 运行 命令行中:

$ python script.py
Microsoft Word 2007+

导致输出该文件所在的文档的 TYPE。使用 python-magic.

现在 运行 来自 scala 的相同脚本使用以下代码:

import sys.process._
def compWithLibmagic(){
    val result = "python /script.py" !
}

抛出以下错误:

Traceback (most recent call last):
File "script.py", line 3, in <module>
import magic
ImportError: No module named magic

PS:我的机器上安装了 python 2.7 和 python 3.6,运行 脚本使用了命令行运行得很好,所以我猜它们都正确地与 MAGIC 包捆绑在一起。

非常感谢任何帮助。

我会尽量以最好的方式回答我自己的问题。

尝试使用 python 编译器从命令行执行 script.pypython2.7 正在使用,当我尝试使用

从 scala 编译器调用相同的 script.py
import sys.process._
def compWithLibmagic(){
    val result = "python /script.py" !
}



它正在使用 python3,但 未被注意到。我花了几天时间才真正弄明白这件事,最后我删除了所有 python2.7 和 python3 库并再次安装了 python 2.7,它非常有效。

它适用于 python3 命令和 Scala 代码。

这应该有效。

import sys.process._
def compWithLibmagic(){
    val result = "python3 script.py".!!
}