【问题标题】:Python Plot doesn't appear when launched by Command Line in C#在 C# 中由命令行启动时不显示 Python Plot
【发布时间】:2018-05-16 23:52:45
【问题描述】:

我正在尝试使用命令行从简单的 C# 应用程序启动 python 脚本(我不能使用 IronPython 之类的包)。它工作得很好,因为我可以看到控制台上执行的所有打印命令。显示matplotlib图时出现问题,没有出现,但执行了以下几行......

这是我如何从 C# 启动我的 python 脚本:

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = true;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();

cmd.StandardInput.WriteLine("C:\\Users\\Alex\\Anaconda3\\python.exe C:\\Users\\Alex\\Desktop\\test.py");
cmd.StandardInput.Flush();
cmd.StandardInput.Close();
cmd.WaitForExit();
Console.WriteLine(cmd.StandardOutput.ReadToEnd());
Console.ReadKey();

而python脚本只有:

import sys
import matplotlib.pyplot as plt

print("OK!!")

plt.plot([1,2,3,4])
plt.show()

print("Done")

当我在命令提示符下自行启动它时,它工作正常。 有人已经遇到这个问题了吗?非常感谢!

编辑: 添加 plt.savefig('foo.png') 时,绘图被保存!但我仍然希望它显示出来。

【问题讨论】:

    标签: c# python matplotlib command


    【解决方案1】:

    以下是如何在scriptcs 控制台中使用pythonnet 的示例:

    https://github.com/pythonnet/pythonnet/issues/442

    > #r "C:\Python\Anaconda3_64b\Lib\site-packages\Python.Runtime.dll";
    > using Python.Runtime;
    > PythonEngine.Initialize();
    > dynamic mpl = Py.Import("matplotlib");
    > mpl.use("TkAgg")
    > dynamic plt = Py.Import("matplotlib.pyplot");
    > plt.plot(new List<float> { 1, 2, 3 });
    > plt.show()
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    相关资源
    最近更新 更多