ファブリックでは、cd
コンテキスト マネージャーは次のように機能します。
with cd("dir"):
run("command")
dir
コマンドは、ディレクトリに変更した後に実行されます。これは正常に機能しますが、問題はグローバル状態を使用することです。たとえば、cd を使用する必要があるヘルパー関数があるとします。
def helper():
with cd("foo"):
run("some command")
helper
次のような別の関数から呼び出すと
def main_function():
helper()
...
それは正常に動作します。しかし、私が次のようなことをすると
def main_function():
with cd("bar"):
helper()
run("come command")
from ヘルパーがbar/foo
ただの代わりにfrom から実行されるようになったため、壊れfoo
ます。
これを回避する方法に関するヒントはありますか?CDで絶対パスを使用しようとしましたが、うまくいきませんでした。私が本当に欲しいのは、cd
コンテキストが関数スコープにのみ拡張されることです。