0
我想创建一个github存储库,可以从任何克隆运行而不需要硬编码目录依赖关系。sys.path.append模块相对于正在运行的脚本的路径
让我们在我的回购说我有一个Python脚本调用myscript.py其位于:
/d/e/f/github/myrepo/myscript/myscript.py
但我知道,我的脚本取决于总是位于一般实用工具:
/d/e/f/github/myrepo/myutils/myutils.py
这样,我怎么能告诉我的脚本始终加载myutils.py,其中相对路径相对于myscript.py myutils.py总是../myutils/myutils.py
由于没有w^myscript.py样子:
# Import modules
import sys
sys.path.append('/d/e/f/github/myrepo/myutils/')
import myutils
正如人们现在可以看到FULLPATH到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模块的完整路径工作,而只是相对路径...
我不认为将'myutils'的绝对路径添加到'sys.path'中是个不错的主意,因为它可能会污染'sys.path'。但是最好将'myrepo'的路径添加到'sys.path'中 – flyer