我正在尝试创建一个可以从任何克隆运行的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模块的完整路径,而只是相对路径......
答案 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