에서 CD() 처리는 cd
컨텍스트 매니저는패브릭 : 도우미 기능 직물에서
with cd("dir"):
run("command")
처럼 작동하고 명령은 dir
디렉토리로 변경 한 후 실행됩니다. 이 잘 작동하지만 문제는 전역 상태를 사용하는 것입니다. 내가
def main_function():
helper()
...
잘 작동과 같은 다른 함수에서 helper
를 호출하면
def helper():
with cd("foo"):
run("some command")
예를 들어, 내가 CD를 사용해야하는 도우미 함수를 가지고 가정합니다. 내가
def main_function():
with cd("bar"):
helper()
이 중단 그런 짓을한다면 도우미에서 run("come command")
지금 bar/foo
대신 단지 foo
에서 실행되기 때문이다.
이 문제를 해결하는 방법에 대한 유용한 정보가 있습니까? 나는 CD에서 절대 경로를 사용하여 시도했지만, 작동하지 않았다. 실제로 원하는 것은 cd
컨텍스트를 함수 범위로만 확장하는 것입니다.
'cd '가 전역 상태를 사용한다고 말하는 것은 약간 잘못된 것입니다. 그것은 어쨌든 전역 상태 인 작업 디렉토리를 수정하고, 예기치 않은'cd'는 작업 디렉토리에 의존하는 명령들이 깨뜨릴 수있는 몇 가지 방법 중 하나 일뿐입니다. 이 문제를 해결하려면 절대 경로를 사용하십시오. – delnan
그래, 무슨 일이 있었는지 알 겠어. 절대 경로가 작동하지 않는다고 생각했지만 내 경로는 완전히 절대적이지 않았습니다. 그들은 그들 안에'~'을 가지고있었습니다. 예비 테스트는 절대 경로가 실제로 절대 경로 일 경우 실제로 작동 함을 나타냅니다. – asmeurer
이것은 아마도 직물의 버그로 간주되어야합니까? – asmeurer