首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Iron Python中添加模块?

如何在Iron Python中添加模块?
EN

Stack Overflow用户
提问于 2017-02-20 19:43:42
回答 1查看 5.6K关注 0票数 2

我一直在尝试使用C# Visual Studio执行以下Python代码(graphcreater.py)。我通过NuGet包管理器添加了IronPyton 2.7.7和IronPython.StdLib 2.7.7。

一旦我运行这个程序,它就会给出一个异常,

没有名为mpl_toolkits.mplot3d的模块

我需要弄清楚如何在Python代码(graphcreater.py)中正确地导入mpl_toolkits模块。

注意:当仅使用Python执行时,graphcreater.py正在运行。

Python代码(graphcreater.py):

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np

fig = plt.figure()

xs = np.array([ 0,1,2,2,1,1,0]);
ys = np.array([ 0,0,0,2,2,3,3]);
zs = np.array([3 ,0, -1, 6, 2, 1,4]);

ax=fig.add_subplot(1,1,1, projection='3d')
ax.grid(True)

ax.plot_trisurf(xs, ys, zs,cmap=cm.coolwarm,linewidth=0.2, antialiased=True)

ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')

# Add a color bar which maps values to colors
# fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

C#代码:

using IronPython.Hosting;
using Microsoft.Scripting.Hosting;

namespace graphCreator
{
  class Program
  {
    static void Main(string[] args)
    {
        ScriptEngine engine = Python.CreateEngine();
        engine.ExecuteFile(@"graphcreater.py");
    }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-17 03:27:19

读完后我想我有了一个解决方案:http://www.needfulsoftware.com/IronPython/IronPythonCS2

我们可以为要使用的库设置搜索路径。例如,我修改了搜索路径,如下所示:

ICollection<string> searchPaths = engine.GetSearchPaths();
searchPaths.Add("J:\\Python\\test2\\venv\\Lib");
searchPaths.Add("J:\\Python\\test2\\venv\\Lib\\site-packages");
engine.SetSearchPaths(searchPaths);

我在我的regualar python venv中安装了NetworkX包。我在C#中从我的IronPython嵌入式控制台调用import networkx,得到以下错误:

>>> import networkx
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "J:\Python\test2\venv\Lib\site-packages\networkx\__init__.py", line 128, in <module>
  File "J:\Python\test2\venv\Lib\site-packages\networkx\drawing\__init__.py", line 6, in <module>
  File "J:\Python\test2\venv\Lib\site-packages\networkx\drawing\nx_pydot.py", line 27, in <module>
  File "J:\Python\test2\venv\Lib\site-packages\pkg_resources\__init__.py", line 77, in <module>
  File "J:\Python\test2\venv\Lib\site-packages\pkg_resources\_vendor\packaging\requirements.py", line 9, in <module>
  File "J:\Python\test2\venv\Lib\site-packages\pkg_resources\extern\__init__.py", line 43, in load_module
  File "J:\Python\test2\venv\Lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 4715, in <module>
  File "J:\Python\test2\venv\Lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 1261, in setParseAction
  File "J:\Python\test2\venv\Lib\site-packages\pkg_resources\_vendor\pyparsing.py", line 1043, in _trim_arity
IndexError: index out of range: -1

因此,这并不是完全成功,但它表明,如果安装了包,我现在可以导入它们。

问题是,并不是所有的软件包都像他们的网站上提到的那样与IronPython兼容。所以我能建议的最好的解决方案是在一个文件夹中安装IronPython (ipy.exe),然后安装你想要的支持的软件包,然后你可以在C#中更新搜索路径到你安装的IronPython的site-packages

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42343676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档