我正试图从一个.net程序中调用一个Python脚本。当我从控制台直接调用脚本时,一切正常,但当我从.net程序中调用它时,它就崩溃了,出现了以下异常。
Traceback (most recent call last):
File "run.py", line 1, in <module>
import pika
File "C:\Users\USERNAME\AppData\Local\Continuum\anaconda3\envs\py37\lib\site-packages\pika\__init__.py", line 10, in <module>
from pika.connection import ConnectionParameters
File "C:\Users\USERNAME\AppData\Local\Continuum\anaconda3\envs\py37\lib\site-packages\pika\connection.py", line 13, in <module>
import ssl
File "C:\Users\USERNAME\AppData\Local\Continuum\anaconda3\envs\py37\lib\ssl.py", line 98, in <module>
import _ssl # if we can't import it, let the error propagate
ImportError: DLL load failed: The specified module could not be found.
我使用的脚本相当长,但这个错误可以通过以下简单的方法重现: 1.
import pika
(我使用的是pika 1.1.0,但pika并不是唯一出现故障的软件包,很多都是这样)。
这不是我第一次遇到这个错误了。我以前在Pycharm上遇到过,这似乎是一个常见的问题Python 3.7 anaconda环境 - import _ssl DLL加载失败错误.这种情况只发生在Python 3.7上,但很遗憾,我不能回到3.6或更低的版本。Pycharm中的修复方法是将环境变量(更确切地说,是PATH变量)明确地追加。我试着在.net中做同样的事情,但错误仍然存在。
The .net script looks something like this
using System.Diagnostics;
using System.IO;
using NLog;
using System;
namespace ConsoleApp1
class Program
static Logger logger = LogManager.GetCurrentClassLogger();
static void Main(string[] args)
string cmd = "run.py";
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = "PATH_TO_PYTHON_3.7_ENV.exe";
start.Arguments = string.Format("\"{0}\"", cmd);
start.UseShellExecute = false;
start.CreateNoWindow = true;
start.RedirectStandardOutput = true;
start.RedirectStandardError = true;
using (Process process = Process.Start(start))
using (StreamReader reader = process.StandardOutput)
string stderr = process.StandardError.ReadToEnd();
string result = reader.ReadToEnd();
Console.WriteLine(stderr);
Console.ReadKey();
有没有人以前遇到过这个问题,并找到了解决的方法?