问题列表 - 第7167页

动态加载Python模块

我正在尝试动态加载我创建的模块.

现在这可以正常工作:

import structures.index
Run Code Online (Sandbox Code Playgroud)

但如果我通过动态导入它来尝试同样的事情,它就会失败.

struct = __import__("structures.index")
Run Code Online (Sandbox Code Playgroud)

提供的错误是:

Error ('No module named structures.index',)
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?


编辑:使用完整范围时(它有用吗?):

struct = __import__("neoform.structures.index")
Run Code Online (Sandbox Code Playgroud)

这不会引发任何错误,但是,它没有加载索引模块,而是加载"neoform"模块.

"struct"的结果是:

<module 'neoform' from '/neoform/__init__.py'>
Run Code Online (Sandbox Code Playgroud)

另外,作为一个附带问题,我如何在动态加载的模块中实例化一个类?(假设所有模块都包含一个公共类名).

编辑:解决方案:(感谢coonj和Rick)这最终成功了.不知道为什么(还),但fromlist必须是"任何东西显然,因为当我把字母"a"作为一个值时它起作用(奇怪的是,假设文件中只有1个类).

def get_struct_module(self, name):
    try:
        return = __import__("neoform.structures." + name, fromlist='*')
    except ImportError, e:
        self.out.add("Could not load struct: neoform.structure." + name + "\n\n" + "Error " + str(e.args))
Run Code Online (Sandbox Code Playgroud)

python module loading dynamic

3
推荐指数
1
解决办法
2万
查看次数

从托管代码中调用Hook LoadLibrary

我们想挂钩调用LoadLibrary以下载未找到的程序集.我们有一个处理托管程序集的ResolveAssembly处理程序,但我们还需要处理非托管程序集.

我们尝试通过"编写Microsoft Windows编程应用程序"中指定的技术重写import表来挂钩LoadLibrary调用,但是当我们调用WriteProcessMemory()时,我们得到一个权限被拒绝错误(998).(是的,我们正在使用提升的私人运行)

在加载CLR时是否有人成功重写了import表?谁能指出我正确的方向?

更新:我们解决了权限被拒绝的问题,但现在当我们迭代混合程序集的Imports表(托管+非托管)时,我们找到的唯一条目是mscoree.dll.有谁知道如何找到原生进口?(我们在C++/CLI中工作).

.net c++ loadlibrary

4
推荐指数
2
解决办法
3582
查看次数

与Linux的"cat"相比,为什么我的"cat"函数与系统调用相比较慢?

我在C语言中使用系统调用(打开,读取和写入)来完成此功能,以模拟Linux系统中的"cat"功能,并且它比实际的慢...

我使用与真正的"猫"相同的缓冲区大小并使用"strace"我认为它正在进行相同数量的系统调用.但是我的"猫"的输出比真正的"猫"慢了一点.

这是我的代码:

#define BUFSIZ 32768

int sysWriteBuffer(int fdout, char *buffer, ssize_t readBytes) {
    ssize_t writtenBytes = 0;

    while(writtenBytes < readBytes) {
        writtenBytes += write(fdout,
            buffer + writtenBytes, readBytes - writtenBytes);
        if(writtenBytes == -1) {
            return -1;
        }
    }

    return 0;
}

int catPrint(int fdin, int fdout) {
    char buffer[BUFSIZ];
    ssize_t readBytes;

    do {
        readBytes = read(fdin, buffer, BUFSIZ);

        if(readBytes == -1) {
            return -1;
        }

        if(sysWriteBuffer(fdout, buffer, readBytes) == -1) {
            return -1;
        }
    } while(readBytes > 0);

    return …
Run Code Online (Sandbox Code Playgroud)

c linux system-calls cat

12
推荐指数
1
解决办法
3306
查看次数

在一个进程中加载​​了两次相同的DLL

我有一个ActiveX控件(foo.dll),当我在IE中嵌入相同的并启动页面时.我可以看到进程资源管理器显示了从同一位置加载的两个foo.dll实例.

这会导致DLL_PROCESS_ATTACH被调用两次,并且全局数据结构被初始化两次.

有办法解决这个问题吗?Windows加载器如何工作?

谢谢,Velu

com winapi activex

5
推荐指数
1
解决办法
3778
查看次数

带焦油的错误代码141

tar -xvzf $ filename.tar.gz || {exit $?; }

这里我的脚本将以errorCode 141退出.我正在使用带有tar版本1.15的Fedora Core 6

它不会一直发生,但超过70%的时间失败.

tar error-code

9
推荐指数
2
解决办法
7119
查看次数

String.Format不格式化字符串

似乎String.Format不会将字符串格式化为输入.我做错了什么,或者这只是本地行为?

输入:0.37

这不起作用.

string x = String.Format("{0:P}", myString)
Run Code Online (Sandbox Code Playgroud)

产量:0.37

这样做.

string x = String.Format("{0:P}", Convert.ToDecimal(myString))
Run Code Online (Sandbox Code Playgroud)

产量:37.00%

.net string.format

6
推荐指数
1
解决办法
2269
查看次数

当我在SQL Server中编写sql语句时,如何从表名中删除dbo前缀?

我的架构中的所有表都有一个dbo前缀.现在在我的sql语句中,我不喜欢一直使用dbo.tablename.任何变通方法或配置更改?

sql-server

13
推荐指数
2
解决办法
1万
查看次数

我在哪里可以了解正确的C#项目架构设计?

我是一个本土的程序员,并且已经用C#编写了我最近的大多数应用程序.这些应用程序通常是帮助我完成日常任务的小工具.我倾向于使用良好的设计模式,但由于我的项目通常规模很小,我只是将所有内容转储到一个Visual Studio项目(GUI,域代码等)中.

我一直想开发一个更大的金融导向应用程序(股票/期货期权分析/建模),但我不太确定如何接近实际的架构/组织.我已经深入研究了一些开源财务应用程序的代码,它们通常被安排到许多子项目中.即:FinApp.Core,FinApp.GUI,FinApp.API,FinApp.DataStorage,FinApp.WebService等.

我在哪里可以了解如何最好地构建大型应用程序?

c# architecture enterprise organization

10
推荐指数
0
解决办法
2万
查看次数

实时调试堆栈溢出

我有一个托管代码Windows服务应用程序,由于托管StackOverFlowException,它偶尔会在生产中崩溃.我知道这是因为我在崩溃模式下运行了adplus并使用SoS分析了故障转储.我甚至连接了windbg调试器并将其设置为"go unhandled exception".

我的问题是,我看不到任何托管堆栈或切换到任何线程.在调试器中断时,它们都被拆除了.

我不是Windbg专家,而且,除了在实时系统上安装Visual Studio或使用该工具进行远程调试和调试外,是否有人建议如何从违规线程中获取堆栈跟踪?

这就是我正在做的事情.

!线程

...

XXXX 11 27c 000000001b2175f0 b220已禁用00000000072c9058:00000000072cad80 0000000019bdd3f0 0 Ukn System.StackOverflowException(0000000000c010d0)

...

此时你会看到XXXX ID表明线程已经死了.

c# stack-overflow crash windbg sos

6
推荐指数
1
解决办法
3567
查看次数

在CSV文件中处理逗号

我正在寻找有关如何处理正在创建,然后由我们的客户上传的csv文件的建议,并且可能在值中使用逗号,例如公司名称.

我们正在关注的一些想法是:引用标识符(值","值","等)或使用| 而不是逗号.最大的问题是我们必须让它变得简单,否则客户就不会这样做.

csv

455
推荐指数
12
解决办法
51万
查看次数