저는 기존의 pylons 프로젝트 (okfn의 ckan)에서 파이썬으로 프로그래밍하고 있습니다. 그러나 나는 무역에 의한 창피병이며 그 일을하는 데 익숙합니다.Pylons REPL은 웹 서버를 실행하는 코드를 재평가합니다.
내가 거짓 진술을 할 경우 제발 올바른은 : 철탑에서
내가
$의 paster이 변경 사항을 확인할 웹 서버를 얻을 수 --reload
를 제공 말해야 것으로 보인다.
그 시점에서 기능을 변경하고 파일을 저장 한 다음 브라우저로 이동하여 변경 사항을 테스트 할 수 있습니다.
웹 페이지를 만드는 과정에서 함수의 변수를 검사하려면 raise "hello"를 입력하고 페이지를로드하면 브라우저 기반 디버거를 얻을 수 있습니다. 프로그램.
이것은 모두 매우 좋으며 잘 작동하며 사람들이 파일런 코드를 쓰는 경향이 있다는 인상을받습니다.
불행히도 다시로드하는 데 몇 초가 걸리고 내 생각의 열차가 계속 손상됩니다.
내가 원하는 것은 emacs에서 웹 서버를 실행하는 것입니다 (명령 행에서 파이썬 REPL이 거의 비슷할지라도). 그래서 편집기에서 함수를 변경할 수 있습니다. 다시 시작하지 않고도 실행중인 프로세스에 새로운 코드를 추가 할 수 있습니다. (커맨드 라인을 복사하면 새로운 것을 복사하여 붙여 넣어야 할 것 같지만, 그것은 또한 약간만 덜 편리 할 것입니다.)
파이썬은 매우 동적 인 것처럼 보이며 여러 방면에서 그렇게 많이 사용됩니다. 원칙적으로 그것이 작동하지 않는 이유를 볼 수 없습니다.
그래서 질문은 추측 :
사람이 일을의 혀짤배기 방법을 잘 알고 있으며, 철탑으로, 그들은 어떻게 철탑의 혀짤배기 방법을 프로그램으로 말해 줄 수? 또는 어떤 이유로 든 불가능하거나 나쁜 생각입니까?
편집 :
내가 함께 이맥스 안에 내 파이썬 인터프리터에서 웹 서버를 실행할 수 있습니다:
from paste.script.serve import ServeCommand
ServeCommand("serve").run(["development.ini"])
내가 삽입하여 무엇을하는지 저를 중지하고 표시하기 위해 코드를 얻을 수 있습니다
을import pdb
pdb.set_trace()
이제 웹 서버가 다른 스레드에서 실행되도록하는 방법이 필요하므로 컨트롤이 REPL로 돌아가고 실행중인 프로세스에서 함수와 변수를 재정의 할 수 있습니다.
이 기능은 REPL에서 함수를 재정의하면 변경 사항이 웹 서버에 반영되지 않는다는 점을 제외하면 작동합니다. 아무도 이유를 아나요?
"변경 사항이 웹 서버에 반영되지 않습니다. 그 이유를 아는 사람이 있습니까?" 문제는 개체가 이미 이전 코드로 만들어 졌다는 것입니다. 클래스 정의를 변경해도 기존 객체의 '__class__'(또는 'func_code'등) 속성은 변경되지 않습니다. 이것이 일반적으로 전체 프로세스를 다시로드하는 것보다 쉽습니다. – SingleNegationElimination
감사합니다. 저렇게 보였어. 나는 포기할거야. 오 잘 ... 내 컴퓨터가 더 빨라질 때까지 기다릴 것 같아. –