运行python脚本,就好像它位于其他位置一样

edd*_*uld 2 python import module path

是否可以从一个位置运行python脚本,但让脚本执行就像它位于其他位置一样(因此导入等都按预期工作).

我的情况是这样的:

  • 应用程序位于/ opt/foo/bin下,应用程序主入口点是 foo.py
  • 在/opt/foo那里有一堆包/模块foo.py然后导入
  • 我们运行应用程序 cd /opt/foo/bin && python foo.py

我希望能够复制只是 foo.py以/tmp与运行它cd /tmp && python foo.py.我希望它能像foo.py生活在下面一样执行/opt/foo/bin.如果需要,我可以修改foo.pyunder /tmp.

希望这对某人有意义.修改foo.pyunder /opt/foo/bin不是一个选项.一种可能性可能是在/tmpie 下创建一个文件夹,/tmp/foo除了符号之外的所有内容foo.py,但是我希望有一种更简单的方法来实现我想要的!

mdm*_*dml 6

以下是Python在导入模块时如何搜索模块的说明.您的问题的一个解决方案是将目录/ opt/foo/bin添加到PYTHONPATH.您还可以在foo.py中修改路径以查找模块,例如

 import sys
 sys.path.append('/opt/foo/bin')
 import foo
Run Code Online (Sandbox Code Playgroud)