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

时间:2013-10-09 22:10:17

标签: python import module path

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

我的情况是:

  • 应用程序位于/ opt / foo / bin下,应用程序主入口点为foo.py
  • /opt/foo下,有一堆软件包/模块foo.py然后导入
  • 我们以[{1}}
  • 运行应用程序

我希望能够将 cd /opt/foo/bin && python foo.py复制到foo.py并使用/tmp运行它。我希望它像cd /tmp && python foo.py生活在foo.py下一样执行。如果需要,我可以修改/opt/foo/bin下的foo.py

希望这对某人有意义。修改/tmp下的foo.py不是一种选择。一种可能性可能是在/opt/foo/bin下创建一个文件夹,即/tmp并对除/tmp/foo之外的所有内容进行符号化处理 - 但我希望有一种更简单的方法来实现我想要的目标!

1 个答案:

答案 0 :(得分:6)

这是a description of how Python searches for modules when you import them。您的问题的一个解决方案是将目录/ opt / foo / bin添加到PYTHONPATH。您还可以在foo.py中修改路径以查找模块,例如

 import sys
 sys.path.append('/opt/foo/bin')
 import foo