我有这样的一个目录结构...
dir/
build.py
dir2
dir3/
packages.py
现在,需要build.py
使用packages.py
--请注意,dir2
不是一个包。那么,如何最好地将
packages.py
加载到build.py
中(目录结构不能更改)?编辑:看起来
sys.path.append
的解决方案很好--但有一件事--我需要很少使用packages.py
文件--并保持包括一个罕见使用的目录的sys.path却排在前面--这是最好的选择吗?编辑II:我认为
imp
的解决方案是最好的。import imp
packages = imp.load_source('packages', '/path/to/packages.py')
编辑 III
针对Python 3.x
请注意,imp.load_source
和一些其他函数已经被弃用。所以今天你应该使用imp.load_module
。
fp, pathname, description = imp.find_module('packages', '/path/to/packages.py')
try:
mod = imp.load_module('packages', fp, pathname, description)
finally:
# since we may exit via an exception, close fp explicitly
if fp:
fp.close()
dir2
中,除了packages.py
外,其他文件都不是 Python 文件。packages.py
仅包含一些build.py
的配置信息。 - treecoderJSON
或其他类似的格式呢?这样就不需要导入它了。此外,你可以在 Python 包中拥有其他文件,我真的不明白为什么会成为问题。 - Gareth Latty