【问题标题】:Adding local file to python search path when running a script in a different directory在不同目录中运行脚本时将本地文件添加到 python 搜索路径
【发布时间】:2017-04-13 18:56:32
【问题描述】:

我编写了一个 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/),则不会出现错误。我认为脚本正在“/home/python”目录中查找 equations.py 文件,而不是我运行脚本的本地文件。

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

【问题讨论】:

  • 您可以import sys 并将所需路径附加到sys.path,或进行相对导入
  • 就是这样,我不知道如何将我所在的目录添加到 sys.path 如果我添加了我所在的目录,我可以做到这一点。但是它当我决定在下一个目录中运行脚本时,这还不够通用。
  • 你可以import os试试dir_path = os.path.dirname(os.path.realpath(__file__))cwd = os.getcwd()
  • 太棒了,非常感谢。成功了!

标签: python bash sys.path


【解决方案1】:

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

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

【讨论】:

  • 谢谢!您回答的第一部分非常有帮助。我将阅读第二部分以了解更多信息
猜你喜欢
  • 2011-12-04
  • 2020-09-25
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 2019-11-22
相关资源
最近更新 更多