버퍼를 실행할 때 파이썬 쉘이 모듈을 다시 가져 오도록 강제하는 방법은 무엇입니까?


9

Cc Cc를 사용하여 버퍼를 Python 셸로 보냅니다. 버퍼의 시작 부분에 가져 오기가 있습니다. 가져올 모듈을 수정하면 Cc Cc로 버퍼를 다시 실행하면 변경 사항이 반영되지 않습니다 (열등한 파이썬은 한 번만 가져 오기를 수행하는 것 같습니다).

첫 번째 버퍼 실행에서 이미 호출 된 모듈을 Python 쉘로 다시 가져 오려면 어떻게해야합니까?

답변:



4

이것이 나의 워크 플로우입니다. imacthon을 사용하도록 emacs를 설정했습니다.

(setq
 python-shell-interpreter "ipython3"
 python-shell-interpreter-args "--simple-prompt --pprint")

그런 다음 ~ / .ipython / profile_default / startup / 00-ipython_init.py에 다음을 입력하십시오.

ip = get_ipython()
ip.magic('load_ext autoreload')

그런 다음 수정하고 ipython에서 모듈을 다시로드 할 때마다 이것을 입력하십시오. 모든 모듈에서 작동하므로 가져 오기 종속성에 대해 걱정할 필요가 없기 때문에 이것을 좋아합니다.

%autoreload

1

python-run을 수정하고 Python 프로세스를 강제로 다시 시작하여 수행 할 수 있습니다.

;; Run python and pop-up its shell.
;; Kill process to solve the reload modules problem.
(defun my-python-shell-run ()
  (interactive)
  (when (get-buffer-process "*Python*")
     (set-process-query-on-exit-flag (get-buffer-process "*Python*") nil)
     (kill-process (get-buffer-process "*Python*"))
     ;; Uncomment If you want to clean the buffer too.
     ;;(kill-buffer "*Python*")
     ;; Not so fast!
     (sleep-for 0.5))
  (run-python (python-shell-parse-command) nil nil)
  (python-shell-send-buffer)
  ;; Pop new window only if shell isnt visible
  ;; in any frame.
  (unless (get-buffer-window "*Python*" t) 
    (python-shell-switch-to-shell)))

(defun my-python-shell-run-region ()
  (interactive)
  (python-shell-send-region (region-beginning) (region-end))
  (python-shell-switch-to-shell))

(eval-after-load "python"
  '(progn
     (define-key python-mode-map (kbd "C-c C-c") 'my-python-shell-run)
     (define-key python-mode-map (kbd "C-c C-r") 'my-python-shell-run-region)
     (define-key python-mode-map (kbd "C-h f") 'python-eldoc-at-point)))

http://lgmoneda.github.io/2017/02/19/emacs-python-shell-config-eng.html


훌륭한 해결책! 당신은 저를 몇 시간 절약했습니다! 감사합니다!
DmitrySemenov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.