簡體   English   中英

如何在Python中設置模塊的文件名,以便模塊中發生的異常使用該文件名?

[英]How do I set the filename of a module in Python so that exceptions that occur in the module use that filename?

我正在使用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>文件名仍用於異常回溯中。

關於如何指定異常中使用的文件名的任何想法?

更新:我正在使用像這樣的小鬼: 動態模塊導入正在嘗試做相對導入時不應該

文件名在exec()產生的代碼對象中設置。 不應將exec()與字符串一起使用,而應使用compile()來分別編譯代碼。 這樣,您可以設置文件名:

code = compile(file_contents, '/your/filename.py', 'exec')
exec(code, mod.__dict__)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM