我在尝试使用 Electron 中运行 python 脚本时遇到了一些麻烦子进程模块。
我最近在我的计算机(OSX 10.11.2)上安装了 Anaconda 并创建了以下脚本:
import pandas as pd
from pandasql import sqldf
# read dataset file
filename = "/path/to/my/dataset.csv"
df = pd.read_csv(filename, sep=',', error_bad_lines=False)
# esecute SQL-like query
q = '''
SELECT * FROM df
'''
syr_subset = sqldf(q, globals())
# print result
print syr_subset.to_json()
如果我在终端中运行这个脚本蟒蛇 myscript.py一切工作正常(脚本使用 pandas 加载 csv 文件,执行查询并返回结果)。
但是,如果我尝试在 Electron 中运行相同的脚本,如下所示:
var exec = require('child_process').exec;
var child = exec('python -u /path/to/myscript.py',
function(error, stdout, stderr) {
console.log('stdout: ', stdout);
console.log('stderr: ', stderr);
if (error !== null) {
console.log('exec error: ', error);
}
});
我收到一个错误。
stderr 包含以下内容:
stderr: Traceback (most recent call last):
File "/path/to/myscript.py", line 1, in <module>
import pandas as pd
ImportError: No module named pandas
捕获的错误包含以下内容:
cmd: "/bin/sh -c python -u /path/to/myscript.py"
message:
Command failed: /bin/sh -c python -u /path/to/myscript.py
Traceback (most recent call last):
File "/path/to/myscript.py", line 1, in <module>
import pandas as pd
ImportError: No module named pandas
因此,看起来这个脚本在 Electron 中运行时找不到 pandas 库(让我重复一遍,在终端中运行时不会发生这种情况,一切正常)。据我所知,我没有使用 virtualenv 。
再次在 Electron 中,我执行了哪条蟒蛇,返回/usr/bin/python.
如果我执行哪条蟒蛇但在终端中,它返回/用户/我的用户名/anaconda2/bin/python.
我不太明白为什么 Electron 似乎运行与我在终端中运行的默认二进制文件不同的二进制文件。
最后,为了更轻松地测试这一点,因为真实代码嵌入到更大的 Electron 应用程序中,我创建了一个新的 Electron 项目并运行完全相同的代码(我在上面粘贴的代码片段)。令人惊讶的是,那里一切正常。因此,两个不同的 Electron 应用程序但显然运行相同的代码:在一种情况下它不起作用(似乎运行不同的 python 二进制文件),而在另一种情况下它起作用。
知道这里会发生什么吗?
非常感谢。