当 运行 不同目录中的脚本时,将本地文件添加到 python 搜索路径

Adding local file to python search path when running a script in a different directory

我写了一个 python 脚本 "Script.py",当我将它复制到我想要 运行 的目录时,它可以工作。我 运行 这个脚本很多,所以我想将它添加到 .bashrc 中,这样我就不必将它复制到我需要 运行 的每个目录中。

所以脚本在目录中:

/home/pythonscripts/Script.py

现在我想运行目录中的这个脚本:

/home/Documents/Test1/

脚本的一部分正在导入不同的文件(这对每个测试用例都是唯一的)。该文件的位置是:

/home/Documents/Test1/equations.py

如果我在 "Test1" 目录和 运行 "Script.py" 目录中启动,我会收到以下错误:

 File "/home/python/Script.py", line 115, in <module>
     import equations
 ImportError: No module named 'equations'

如果我将脚本放入我从 (/home/Documents/Test1/) 运行ning 的目录中,则没有错误。我认为脚本正在“/home/python”目录中查找 equations.py 文件,而不是我从中 运行 获取脚本的本地文件。

我的问题是如何告诉脚本以一般方式在本地目录中查找 equations.py 文件,以便我可以从任何目录 运行 Script.py 和它是否知道要查看 运行 中 equations.py 的那个?

获取当前工作目录(运行脚本时你所在的目录)

import os
cwd = os.getcwd()

现在您可以使用完整路径 cwd/myfile.py 使用 importlib 导入文件(在 python 3 中)。有关详细信息,请参阅 How to import a module given the full path?

附带说明一下,在处理文件和文件系统时,我个人非常喜欢使用这个包: https://github.com/gabrielfalcao/plant