关于python:努力追加我的sys.path的相对路径

Struggling to append a relative path to my sys.path

所以有很多类似的问题,但没有一个答案能满足我的要求。

实际上,我正在使用命令行中的绝对目录运行python脚本。在这个文件本身中,我想导入一个模块/文件,我目前使用一个绝对路径(sys.path.append(/....))。但我想使用相对路径,相对于脚本本身。我所能做的似乎只是附加一个相对于当前工作目录的路径。

我该怎么做?


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

例1

1
2
main script:      /some/path/foo/foo.py
module to import: /some/path/foo/bar/sub/dir/mymodule.py

添加EDOCX1[0]

1
2
3
import sys, os
sys.path.append(os.path.join(sys.path[0],'bar','sub','dir'))
from mymodule import MyModule

例2

1
2
main script:      /some/path/work/foo/foo.py
module to import: /some/path/work/bar/mymodule.py

添加EDOCX1[0]

1
2
3
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,'..')更轻便。

也见

有关导入模块的文档:

  • 在Python 2中
  • 在Python 3中

好吧,我已经找到了怎么做的方法。

如何使用python查找脚本的目录?

提供答案