是否可以从一个位置运行python脚本,但是脚本执行就像它位于其他位置一样(因此导入等都按预期工作)。
我的情况是:
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.py
。
希望这对某人有意义。修改/tmp
下的foo.py
不是一种选择。一种可能性可能是在/opt/foo/bin
下创建一个文件夹,即/tmp
并对除/tmp/foo
之外的所有内容进行符号化处理 - 但我希望有一种更简单的方法来实现我想要的目标!
答案 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