所以有很多非常相似的问题,但没有一个答案似乎能满足我所寻找的目标。
基本上我在命令行中使用绝对目录运行python脚本
在这个文件本身,我想导入一个模块/文件,我目前使用绝对路径来执行此操作(sys.path.append(/....)
。
但我想使用相对于脚本本身的相对路径
我似乎能够做的就是追加一个相对于我目前工作目录的路径。
我该怎么做?
答案 0 :(得分:26)
以下两种备选方案适用于Python版本2和3.选择您喜欢的方式。涵盖所有用例。
main script: /some/path/foo/foo.py
module to import: /some/path/foo/bar/sub/dir/mymodule.py
加入foo.py
import sys, os
sys.path.append(os.path.join(sys.path[0],'bar','sub','dir'))
from mymodule import MyModule
main script: /some/path/work/foo/foo.py
module to import: /some/path/work/bar/mymodule.py
加入foo.py
import sys, os
sys.path.append(os.path.join(os.path.dirname(sys.path[0]),'bar'))
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,'..')
有关导入模块的文档:
答案 1 :(得分:0)