擅长:python、mysql、java
<p>导入只能从属于<code>PYTHON_PATH</code>的某些目录中完成。你可以延长这个时间。然后必须使用<code>__import__()</code>和模块名(而不是文件系统中的路径)。您必须处理临时文件的后缀。在</p>
<p>我使用临时模块文件的本地目录实现了一个简单版本,并使用适当的tempfile实现了一个版本:</p>
<pre><code>#!/usr/bin/env python3
import sys
import os
import tempfile
SCRIPT = '''\
def fun():
print("hello world!")
'''
# simple version using the local directory:
with open('bla.py', 'w') as tmp_module_file:
tmp_module_file.write(SCRIPT)
import bla
bla.fun()
# version using the tempfile module:
tmpfile = tempfile.NamedTemporaryFile(suffix='.py', delete=True)
try:
tmpfile.write(SCRIPT.encode('utf8'))
tmpfile.flush()
tmpmodule_path, tmpmodule_file_name = os.path.split(tmpfile.name)
tmpmodule_name = tmpmodule_file_name[:-3] # strip off the '.py'
sys.path.append(tmpmodule_path)
tmpmodule = __import__(tmpmodule_name)
finally:
tmpfile.close()
tmpmodule.fun()
</code></pre>