sys.path.append模块相对于正在运行的脚本的路径

时间:2013-12-19 23:28:29

标签: python github

我正在尝试创建一个可以从任何克隆运行的github存储库,而不需要硬编码目录依赖项。

让我们在我的回购中说我有一个名为myscript.py的python脚本,它位于:

/d/e/f/github/myrepo/myscript/myscript.py

但我知道我的脚本取决于总是位于以下位置的常用工具:

/d/e/f/github/myrepo/myutils/myutils.py

因此,如何告诉我的脚本始终加载myutils.py,其中myutils.py相对于myscript.py的相对路径始终是../myutils / myutils.py

截至目前,myscript.py看起来像:

# Import modules
import sys
sys.path.append('/d/e/f/github/myrepo/myutils/')
import myutils

正如现在可以看到myutils.py的完整路径是硬编码的,所以如果有人在他们自己的计算机中克隆他们的回购,它将无法工作。

理想情况下,用户应该能够运行myscript.py,如下所示:

cd /d/e/f/github/myrepo/myscript/
python myscript.py -h

或者,

python /d/e/f/github/myrepo/myscript/myscript.py -h

它应该工作而不必硬编码myutils模块的完整路径,而只是相对路径......

1 个答案:

答案 0 :(得分:0)

通过做一些研究似乎可能是一个可能的答案:

# Import modules
import subprocess, sys, os
script_path = os.path.dirname(__file__)
myutils_path = os.path.join(script_path, '../myutils')
sys.path.append(myutils_path)
import myutils