2013-10-09 25 views
2

是否可以從一個位置運行python腳本,但腳本執行起來就好像它位於其他位置(因此導入等都按預期工作)。運行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。我希望它能夠執行,就好像它是生活在/opt/foo/bin下的foo.py一樣。如果需要,我可以在/tmp下修改foo.py

希望這對某人有意義。根據/opt/foo/bin修改foo.py不是一個選項。一種可能是在/tmp之下創建一個文件夾,即/tmp/foo和除了foo.py之外的符號鏈接 - 但我希望有一種更簡單的方法來完成我想要的功能!

回答

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 
+0

該解決方案適用於簡單情況,但不適用於我們的應用程序,因爲我們的應用程序正在根據腳本的位置自行處理sys.path。 – eddiewould

相關問題