2017-05-05 3 views
0

나는 IDLE로 파이썬 3.6.1을 사용합니다. 로컬 환경 (변수 등)을 유지하면서 일련의 스크립트를 실행할 수 있기를 원합니다. 쉘에 모든 명령을 한 줄씩 입력 한 것처럼 말입니다. 그러나 스크립트를 실행할 때마다 환경이 다시 시작되고 이전 실행의 모든 ​​변수가 손실됩니다.새 스크립트를 실행할 때 python IDLE이 다시 시작되는 것을 막는 방법

다시 시작할 수 없도록 할 수있는 방법이 있습니까? 셸에서 한 줄씩 내용을 입력하고 싶지 않습니다.

이 질문은 Run a module in IDLE (Python 3.4) without Restart과 유사하지만 설득력있는 대답은 아직 없습니다. 질문이 혼동스럽게 말하기 때문일 수 있습니다.

편집 : 내가 왜 두 번째 스크립트를 실행하여 첫 번째 스크립트와 상태를 공유하는지 명확하게하는 배경을 제공 할 것입니다. Selenium Web Driver를 사용하여 University 웹 메일 계정의 이메일을 전달합니다. 너무 자주 로그인하면 Outlook Web App는 이상한 일이 일어나고 액세스가 차단되었음을 인식합니다. 그래서 첫 번째 스크립트로 한 번 로그인 한 다음이 첫 번째 스크립트 위에 다른 전달 스크립트를 테스트 할 수있게하려고합니다. 그래서 내가 할 수있는 것은 첫 번째 스크립트를 실행 한 다음 두 번째 쉘을 하나씩 쉘에 입력하는 것입니다. 그러나 그것은 정말로 성가시다. 두 번째 스크립트를 셸에 입력 한 것처럼 재시작하지 않아도됩니다.

+1

상태를 공유하려면 별도의 스크립트가 아니어야합니다. –

+0

왜 그 것들을 한 줄씩 타이핑하고 있습니까? 대신, 그것을 설정하는 스크립트를 편집하고 실행하십시오. – jonrsharpe

답변

0

execfile("other_script.py") (파이썬 2) 또는 exec(open("other_script.py").read()) (파이썬 3)을 호출하는 마스터 스크립트를 작성하는 것은 어떻습니까? 그런 다음 IDLE에서 마스터 스크립트를 실행하십시오. 아마도 각 스크립트에 대해 shebang 행과 적절한 실행 권한이 필요할 것입니다.

이 부분을 참조하여 답을 얻은이 thread을 참조하십시오.

또 다른 옵션은 쉘 스크립트 (bash, batch, sh, 시스템에서 사용중인 모든 쉘)를 사용하여 "쉘로 입력하는 것"을 자동화하는 것입니다.

현실적으로 다른 사람들이 말했듯이,이 작업을 별도의 파일로 분할하여 모듈화하는 데 많은 이점이있는 것처럼 보이지는 않습니다. 필요한 모든 기능을 갖춘 Python 프로그램을 만든 다음 적절하게 호출해야하는 이유는 무엇입니까?

+0

귀하의 생각 답에 감사드립니다. Exec (...)이 내 문제를 해결해줍니다! 셸을 통한 자동화 또한 좋은 아이디어입니다. 내 구체적인 경우에는 환경을 유지하면서 함수를 다시 작성하는 용도로 사용한다고 생각합니다 (위의 편집에서 설명). 하지만 동의합니다. 아마도 매우 틈새 시장에 적용될 것입니다. –