import tempfile
tmp = tempfile.NamedTemporaryFile(delete=True)
try:
# do stuff with temp
tmp.write(b'def fun():\n\tprint("hello world!")\n')
if __name__ == '__main__':
func = __import__(tmp.name)
func.fun()
finally:
tmp.close() # deletes the file
所以我想创建一个临时文件,添加一些源代码,然后导入模块并调用函数,但我总是遇到这样的错误:
^{pr2}$它似乎找不到临时文件的模块。我怎么解决这个问题?在
您的代码存在一些问题:
.py
结尾,但Python模块应该以.py
结尾。您可以通过在NamedTemporaryFile()
中设置suffix='.py'
来解决这个问题。在__import__()
不是从完整路径加载模块的正确方法。请看这里:How to import a module given the full path?tmp.flush()
以修复此问题。在导入只能从属于
PYTHON_PATH
的某些目录中完成。你可以延长这个时间。然后必须使用__import__()
和模块名(而不是文件系统中的路径)。您必须处理临时文件的后缀。在我使用临时模块文件的本地目录实现了一个简单版本,并使用适当的tempfile实现了一个版本:
相关问题 更多 >
编程相关推荐