这个片段来自SO的早期答案.它大约一岁(答案未被接受).我是Python的新手,我发现系统路径真的很痛苦.我有一些用不同目录的脚本编写的函数,我希望能够将它们导入到新项目中,而不必跳过箍.
这是片段:
def import_path(fullpath):
""" Import a file with full path specification. Allows one to
import from anywhere, something __import__ does not do.
"""
path, filename = os.path.split(fullpath)
filename, ext = os.path.splitext(filename)
sys.path.append(path)
module = __import__(filename)
reload(module) # Might be out of date
del sys.path[-1]
return module
Run Code Online (Sandbox Code Playgroud)
它来自这里: 如何在Python中进行相对导入?
我想要一些反馈,我是否可以使用它 - 如果有任何不良副作用对新手来说可能不明显.
我打算用它这样的东西:
import_path(/home/pydev/path1/script1.py)
script1.func1()
Run Code Online (Sandbox Code Playgroud)
等等
以我打算的方式使用该功能是否"安全"?
"官方"和完全安全的方法是标准Python库的imp模块.
使用imp.find_module在精确指定的可接受目录列表中查找模块 - 它返回一个3元组(file, pathname, description)- 如果不成功,file实际上是None(但它也可以提高,ImportError所以你应该使用try/ except为此以及检查if file is None:).
如果搜索成功,请调用imp.load_module(在try/中finally以确保关闭文件!),在第一个参数之后必须与name您传递的相同find_module- 它返回模块对象(phew; - ).
| 归档时间: |
|
| 查看次数: |
3996 次 |
| 最近记录: |