努力追加我的sys.path的相对路径

时间:2014-01-21 13:08:30

标签: python relative-path

所以有很多非常相似的问题,但没有一个答案似乎能满足我所寻找的目标。

基本上我在命令行中使用绝对目录运行python脚本 在这个文件本身,我想导入一个模块/文件,我目前使用绝对路径来执行此操作(sys.path.append(/....)
但我想使用相对于脚本本身的相对路径 我似乎能够做的就是追加一个相对于我目前工作目录的路径。

我该怎么做?

2 个答案:

答案 0 :(得分:26)

以下两种备选方案适用于Python版本2和3.选择您喜欢的方式。涵盖所有用例。

示例1

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

示例2

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)

好的,我已经找到了如何做到这一点。

How can I find script's directory with Python?

提供答案