gpt4 book ai didi

wolfram-mathematica - 在 Mathematica 中运行外部命令时非常奇怪的行为

转载 作者:行者123 更新时间:2023-12-04 06:09:40 26 4
gpt4 key购买 nike

为什么

Import["!python --version", "Text"]

在命令行上工作但不在 Mathematica 8 的前端(在 Mac 上运行)?

shell :
"Python 2.7.1 -- EPD 7.0-2 (64-bit)"

前端:
""

更新:

好的,路径不是(真的)问题,因为
Import["!which python", "Text"]

产量
"/usr/bin/python"

在前端和
"/Library/Frameworks/EPD64.framework/Versions/Current/bin/python"

在 shell 程序中(这是我在系统上安装的不同 python 版本)。尽管如此,无论
Import["!/usr/bin/python --version", "Text"]

也不
Import[
"!/Library/Frameworks/EPD64.framework/Versions/Current/bin/python --version",
"Text"]

在前端产生正确的输出。但是在前端和终端版本中使用不同的 shell 可能暗示 Mathematica 行为不端的原因。

最佳答案

python --version将其响应写入标准错误流,但 Import只捕获标准输出流。要查看响应,请将 stderr 重定向到 stdout。在大多数 shell(甚至 Windows)中,这可以使用魔法咒语 2>&1 来实现。 :

Import["!python --version 2>&1", "Text"]

前端不同于命令行?
Import在 Mathematica 的命令行版本中运行时,command 的功能似乎有所不同,但外观可能具有欺骗性。这是一个转录:
$ math
Mathematica 8.0 for Microsoft Windows (64-bit)
Copyright 1988-2011 Wolfram Research, Inc.

In[1]:= Import["!python --version","Text"]
Python 2.6.4

Out[1]=

请注意 Out[1]是空白。版本字符串出现在抄本中,但这是因为标准错误流显示在终端窗口中,穿插着 Mathematica 的标准输出。如果我们将结果分配给一个变量并(尝试)使用 ; 抑制输出,这会更加清楚。 :
In[2]:= v=Import["!python --version","Text"];
Python 2.6.4

In[3]:= v

Out[3]=

不应该有任何输出,但我们仍然看到终端窗口中显示的标准错误流。 v为空,表示 Import的值表情也是一片空白。

关于wolfram-mathematica - 在 Mathematica 中运行外部命令时非常奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6170960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com