让我们说我有这个超级Python脚本,将来需要运行cv2 ...
import cv2
def method():
print("Hello")
parameter = "l"
return "OOPS"
method()
在C#中类似这样的东西。
Process p = new Process();
p.StartInfo = new ProcessStartInfo(@"D:\Programming\Python\python.exe", fileName)
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
p.Start();
string output = p.StandardOutput.ReadToEnd();
但这确实会引发错误“ ImportError:DLL加载失败”。好吧,因为我有大约4个Python解释器,所以似乎在错误的目录中查找。进行快速修复。
string path = @"D:\Programming\Python;" + Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine);
Environment.SetEnvironmentVariable("PATH", path, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONHOME", @"D:\Programming\Python;", EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONPATH ", @"D:\Programming\Python\Lib; D:\Programming\Python\DLLs", EnvironmentVariableTarget.Process);
string fileName = @"..\Python\hello.py";
Process p = new Process();
p.StartInfo = new ProcessStartInfo(@"D:\Programming\Python\python.exe", fileName)
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
p.Start();
string output = p.StandardOutput.ReadToEnd();
现在已修复了导入DLL,但是出现了另一个野生错误,名为
致命的Python错误:initfsencoding:无法加载文件系统编解码器
ModuleNotFoundError:没有名为“ encodings”的模块
这时我迷路了,不知道下一步该怎么做...欢迎任何想法,祝你有美好的一天。
更新: 删除了anaconda和一个虚拟env之外的所有其他python解释器,并尝试以下操作:
因此,现在我可以成功地从cmd调用“ python”,并检查版本,虚拟环境是python 3.6,这是正确的选择。
Python is correct
但这就是所有乐趣的开始,您会期望控制台中出现“ hello”……
hell incarnate
答案 0 :(得分:0)
未找到此问题的正确答案,但在p2exe或pyinstaller中发现了解决方法。
只需调用pyinstaller.py --onefile xx.py并创建exe文件并将其传递到进程即可。