导入 IronPython 的嵌入式库

2024-05-11

我已通过 NuGet 将 IronPython 标准库添加到我的 c#.net4 项目中,后来获得了一些参考资料(IronPython、IronPython.Modules、IronPython.SQLite、IronPython.Wpf、Microsoft.Dynamic、Microsoft.Scripting 等)和“Lib”文件夹包含 python 模块。 现在我尝试在 my file.py 中导入“urllib”模块,但收到 ImportException(没有名为 urllib 的模块)。 我该如何使用 urllib?我应该将 Lib 文件夹复制到项目输出目录还是执行其他操作?

UPD:如果我将所需的模块复制到项目输出目录,则程序无需设置路径即可正常工作。 我可以使用“urllib”作为嵌入式资源或在运行时导入它吗?

Thanks!

Sources:

public static void Main(string[] args)
{
    var url = new Uri("www.microsoft.com");
    var r = PythonHelper.Get(url);
}

public static class PythonHelper
{
    public static string Get(Uri url)
    {
        var programPath = @"PySources\GetPage.py";
        var py = new Py(programPath);
        py.Scope.SetVariable("url", url.ToString());
        py.Source.Execute();
        var result = py.Scope.GetVariable<string>("result");
        return result;
    }

    private class Py
    {
        public ScriptScope Scope { get; private set; }
        public ScriptSource Source { get; private set; }

        public Py(string pyPath)
        {
            var pyEngine = Python.CreateEngine();
            Scope = pyEngine.CreateScope();
            Source = pyEngine.CreateScriptSourceFromFile(pyPath);
        }

        public void Execute()
        {
            Source.Execute(Scope);
        }
    }
}

GetPage.py:
#!/usr/bin/env python
# -*- coding: windows-1251 -*-
#coding=windows-1251
#encoding=windows-1251

import clr
clr.AddReference("IronPython")
clr.AddReference('IronPython.Modules')

import urllib

user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like     Gecko) Chrome/23.0.1271.95 Safari/537.11"
headers = { 'User-Agent' : user_agent }
result = urllib.urlopen(url, '' ,headers).read().decode('utf-8')

您可以将 Lib 文件夹复制到输出目录。如果您希望它位于不同的目录中,您可以使用ScriptEngine.SetSearchPaths()完全控制库路径。

另一种选择是将标准库放入 .zip 文件中并使用添加ScriptEngine.SetSearchPaths(),这至少减少了要发送的文件数量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

导入 IronPython 的嵌入式库 的相关文章

随机推荐

  • 在 Android 上使用 Fluidsynth 从 SoundFonts 播放音符

    有没有办法让android通过使用FluidSynth使用SoundFont文件播放声音 我一直在看jOrgan http sourceforge net apps mediawiki jorgan index php title Deve
  • 设置 MetaspaceSize 的指南 - java 8

    64 位服务器的 MetaspaceSize 默认值是多少 我在官方文档中没有找到它 我观察到 在服务器 JVM 进程中 GC 频率有时会变高并持续增长 如果我重新启动服务几次 它就会恢复稳定 我认为这是由于 JRE 升级造成的 JVM 堆
  • ember js 子视图和 didinsertelement 事件

    我正在写一个Ember View 它将树结构变成菜单 我需要递归 所以我在视图模板中使用的是 view helper 它递归地调用自身来构建嵌套 ul li 结构 我需要的是一个钩子来调用一些 jQuery 插件来将此结构转换为菜单 当我从
  • 如何使用 phpunit 测试内部数组

    我必须测试带有内部数组的数组 我的数组如下所示 testdata Array 0 gt Array label gt Ammy idr gt user7 rel gt 7 1 gt Array label gt sidh idr gt us
  • SQL DML:日期值不正确 (MySQL)

    我在数据库中创建了一个表 CREATE TABLE official receipt student no INT UNSIGNED academic year CHAR 8 trimester ENUM 1 2 3 or no MEDIU
  • webpack 加载器并包含

    我是 webpack 的新手 我正在尝试了解加载器及其属性 例如测试 加载器 包含等 这是我在 google 中找到的 webpack config js 的示例片段 module loaders test js loader babel
  • 错误:找不到模块 \node_modules\sqlite3\lib\binding\electron-v8.0-win32-x64\node_sqlite3.node'

    我在 Electron 8 1 中安装 sqlite3 时遇到问题 我收到以下错误 Error Cannot find module D TASK 2020 1 1 AMS node modules sqlite3 lib binding
  • 将 Angular 项目从 StackBlitz 导出到本地

    我想导出在 StackBlitz 中完成的 Angular 项目 并使用以下命令从 Angular CLI 执行它ng serve就像我们对在本地计算机中创建的 Angular 项目所做的那样 去做就对了 这是您需要点击的地方
  • 清理 IntelliJ 中构建的 Play 框架

    我有一个拼写错误conf routes文件导致 Play Framework 生成错误命名的类 重建项目并运行Invalidate Caches并没有解决 IntelliJ 中的问题 当我手动运行时重新生成了不正确的类文件play clea
  • 字符串排序真的是 O(n^2logn) 吗? [复制]

    这个问题在这里已经有答案了 我读了以下内容 排序需要 O NlogN 那么它怎么是 O N 2logN 我们在这里想念的是 两个字符串的比较不是 O 1 在最坏的情况下 需要 在 所以最终的复杂度是O N 2logN 它是否正确 我一直认为
  • CSS 列数导致项目拆分列

    尝试不使用 jQuery 脚本来实现砖石效果 因此寻找 CSS 替代方案 我正在尝试使用列计数 这似乎有效 但不符合预期 因此 列就在那里 但有时容器中的项目会被拆分为多个列 正如您应该在此示例中看到的那样 http jsfiddle ne
  • AWS 从实例元数据检索安全凭证

    这不是问题的重复使用 API 调用获取我的 AWS 凭证 https stackoverflow com q 34810642 850848 因为我具体询问亚马逊在他们给出的示例中的含义 我正在看这里 http docs aws amazo
  • WiX - 安装 Windows 服务以在 x64 模式下运行

    我正在使用 WiX 3 5 及其 ServiceInstall 标签安装 Windows 服务
  • 警告:格式“%d”需要类型“int *”,但参数 2 的类型为“int”

    所以我是 C 的新手 并且对这个警告发生的情况遇到了麻烦 该警告是什么意思以及我该如何解决它 我写的代码在这里 void main void char name int age 0 printf input your name n scan
  • Java SWT 用户输入验证

    在 SWT 中进行用户输入验证时 Java 约定是什么 我读到有 FieldEditors 它们是非常方便的字段 但遗憾的是仅适用于首选项和对话框 我还了解到有一个 IValidator 接口 但它经常与数据绑定一起使用 就我而言 我的大多
  • Android - 在通知栏中使用外部个人资料图像,如 Facebook

    我知道您可以在推送通知参数中发送信息 例如消息 标题 图像 URL 等 Facebook 如何在通知区域中显示您的个人资料图片和消息 我想在通知区域中使用外部图像 因此当您将其下拉时 您会看到带有消息的个人资料图像 现在 我的仅显示可绘制文
  • 为什么 Azure Key Vault 安全?

    Azure Key Vault 为什么或如何安全 我需要在服务器上存储密钥 URI 客户端 ID 和客户端密钥 因此如果任何人授予对托管应用程序的服务器的访问权限 他将能够访问存储在 Key Vault 中的密钥和密钥 这意味着将它们存储在
  • Cloud Functions for Firebase 中的套接字挂起错误

    我有一个由 Pub Sub 事件触发的云函数 它用请求 承诺 https github com request request promise从我用于数据的 API 发出多个 GET 请求 它在 Cloud Functions Emulat
  • 如何将 BOOST_FOREACH 与两个 std::map 一起使用?

    我的代码基本上如下所示 std map
  • 导入 IronPython 的嵌入式库

    我已通过 NuGet 将 IronPython 标准库添加到我的 c net4 项目中 后来获得了一些参考资料 IronPython IronPython Modules IronPython SQLite IronPython Wpf M