所以有很多非常相似的问题,但似乎没有一个答案能满足我的需求。
本质上我是在命令行中使用绝对目录运行 python 脚本。
在这个文件本身中,我想导入一个模块/文件,我目前使用绝对路径来执行此操作(
sys.path.append(/....)
。我该怎么做?
以下两种替代可能性适用于 Python 版本 2 和 3。选择您喜欢的方式。涵盖所有用例。
模块正在从当前运行模块 (
./bar/baz
) 目录的子目录 (/some/path/foo
) 导入。
main script: /some/path/foo/foo.py
module to import: /some/path/foo/bar/baz/mymodule.py
添加
foo.py
import sys, os
sys.path.append(os.path.join(sys.path[0], 'bar', 'baz'))
from mymodule import MyModule
模块正在从当前运行模块 (
./bar/baz
) 的 parent 目录 (/some/path/
) 的子目录 (/some/path/foo
) 导入。
main script: /some/path/foo/foo.py
module to import: /some/path/bar/baz/mymodule.py
添加
foo.py
import sys, os
sys.path.append(os.path.join(os.path.dirname(sys.path[0]), 'bar', 'baz'))
from mymodule import MyModule
sys.path[0]
在两个示例中都是 /some/path/foo
os.path.join('a','b','c')
比'a/b/c'
os.path.dirname(mydir)
比os.path.join(mydir,'..')
有关导入模块的文档: