1

imp我正在使用库从字符串中导入模块(不要问) 。这一切都很好而且花花公子,但是当这样的模块出现错误时,我会得到这样的堆栈跟踪:

Traceback (most recent call last):
  File "<string>", line 33, in do_something
  File "<string>", line 20, in really_do_something
Exception: STRING FILENAME EXAMPLE

我尝试将模块上的文件属性设置为有意义的东西,但<string>文件名仍在异常回溯中使用。

关于如何指定异常中使用的文件名的任何想法?

更新:我正在像这样使用imp:动态模块导入正在尝试在不应该的时候进行相对导入

4

1 回答 1

5

文件名在由exec(). exec()您应该使用compile()单独编译代码,而不是使用字符串。这样你就可以设置文件名:

code = compile(file_contents, '/your/filename.py', 'exec')
exec(code, mod.__dict__)
于 2012-10-19T15:41:28.043 回答