110,569
社区成员
发帖
与我相关
我的任务
分享
import sys
sys.path.append("X:\\python27\\lib");
或者嫌麻烦 你可以设置一个环境变量 每次在初始化的时候 去读取环境变量里面的路劲 然后附加到 搜索路径中
private ScriptEngine m_engine;
private ScriptScope m_scope;
public 构造器(string strFile) {
try {
m_engine = Python.CreateEngine();
#region SetSearchPaths
var lstPath = m_engine.GetSearchPaths();
string strVar = Environment.GetEnvironmentVariable("PATH", EnvironmentVariableTarget.Machine);
if (strVar != null) {
foreach (var v in strVar.Split(';')) {
if (v.ToLower().IndexOf("python") != -1)
lstPath.Add(v);
}
}
strVar = Environment.GetEnvironmentVariable("PYTHON_IMPORT_PATH", EnvironmentVariableTarget.Machine);
if (strVar != null) {
foreach (var v in strVar.Split(';')) {
lstPath.Add(v);
}
}
m_engine.SetSearchPaths(lstPath);
#endregion
m_scope = m_engine.CreateScope();
m_engine.CreateScriptSourceFromFile(strFile).Compile().Execute(m_scope);
} catch (SyntaxErrorException ex) {
if (m_engine == null) throw ex;
string strMessage = ex.Message + "\r\n"
+ ex.Severity + " at Line:" + ex.Line + " Col:" + ex.Column + " ErrorCode:" + ex.ErrorCode + "\r\ncode:\r\n "
+ ex.SourceCode.Split('\n')[ex.Line - 1].Trim();
throw new Exception(strMessage, ex);
} catch (Exception ex) {
if (m_engine == null) throw ex;
string strMessage = ex.Message + "\r\n\r\n--------IronPython 模块搜索路径:\r\n";
foreach (var v in m_engine.GetSearchPaths())
strMessage += v + "\r\n";
strMessage += "--------\r\n";
strMessage += "若一些模块无法加载 确认此模块在搜索路劲下 若不再可以尝试一下方案\r\n";
strMessage += " 1.添加系统环境变量名[PYTHON_IMPORT_PATH] 并在其中添加模块路径\r\n";
strMessage += " 2.在脚本开头写入以下代码\r\n";
strMessage += " import sys\r\n";
strMessage += " sys.path.append('yourpath')";
throw new Exception(strMessage, ex);
}
}