-1

这是我的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+

导致该文件所在文档的类型的输出。使用 python 魔术。

现在使用以下代码从 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 包捆绑在一起。

非常感谢任何形式的帮助。

4

2 回答 2

0

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

在尝试script.py使用 python 编译器从命令行执行python2.7时,当我尝试script.py使用 scala 编译器调用相同的

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



它正在使用被忽视的python3。我花了几天时间才真正弄清楚这件事,最后我删除了所有的 python2.7 和 python3 库并再次安装了 python 2.7,它就像一个魅力。

于 2018-04-20T16:44:33.057 回答
0

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

这应该有效。

import sys.process._
def compWithLibmagic(){
    val result = "python3 script.py".!!
}
于 2022-01-26T13:00:39.973 回答