我有一个模块foo的,含有util.py和bar.py.
我想它导入空闲或Python会话。 我怎么去呢?
我能找到如何在当前目录或默认的Python路径中导入模块不是没有文档。 尝试后import "<full path>/foo/util.py"
,并from "<full path>" import util
我能得到的最接近的是
import imp
imp.load_source('foo.util','C:/.../dir/dir2/foo')
这给了我许可的Windows 7拒绝。
一种方法是简单地修改你的路径 :
import sys
sys.path.append('C:/full/path')
from foo import util,bar
注意,这需要FOO是一个Python包,即包含一个__init__.py
文件。 如果你不想修改sys.path
,你可以同时修改PYTHONPATH
环境变量或者在系统上安装的模块 。 当心,这意味着其他的目录或.py
该目录中的文件可能被无意装。
因此,您可能需要使用imp.load_source
代替。 它需要的文件名,而不是一个目录(以当前用户被允许读取文件):
import imp
util = imp.load_source('util', 'C:/full/path/foo/util.py')
你可以使用自定义模块搜索路径PYTHONPATH
环境变量,或者手动修改sys.path
目录列表。
见模块搜索路径上python.org文档。
试试这个
import sys
sys.path.append('c:/.../dir/dir2')
import foo
继phihag的提示,我有这样的解决方案。 只要给一个源文件的路径load_src
,它会加载它。 您还必须提供一个名称,这样你就可以使用这个名称导入此模块。 我喜欢做这种方式,因为它更明确:
def load_src(name, fpath):
import os, imp
return imp.load_source(name, os.path.join(os.path.dirname(__file__), fpath))
load_src("util", "../util.py")
import util
print util.method()
另一种(不太明显)的方式是这样的:
util = load_src("util", "../util.py") # "import util" is implied here
print util.method() # works, util was imported by the previous line
编辑:该方法被重写,以使其更清晰。