Làm cách nào để buộc shell Python nhập lại các mô-đun khi chạy bộ đệm?


9

Tôi đang sử dụng Cc Cc để gửi bộ đệm tới trình bao Python. Bộ đệm có một nhập vào lúc đầu. Tôi thấy rằng nếu tôi sửa đổi mô-đun tôi đang nhập, nó sẽ không phản ánh các thay đổi nếu tôi chạy lại bộ đệm với Cc Cc (có vẻ như Python kém hơn chỉ thực hiện nhập một lần).

Làm cách nào tôi có thể buộc shell Python nhập lại các mô-đun đã được gọi trong lần chạy đầu tiên của bộ đệm?

Câu trả lời:



4

Đây là quy trình làm việc của tôi. Tôi đặt emacs để sử dụng ipython

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

Sau đó, trong ~ / .ipython / profile_default / startup / 00-ipython_init.py tôi đặt như sau:

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

Sau đó, tôi gõ cái này bất cứ khi nào tôi sửa đổi và muốn tải lại các mô-đun của mình trong ipython. Tôi thích điều này bởi vì nó hoạt động cho tất cả các mô-đun và tôi không phải lo lắng về phụ thuộc nhập khẩu.

%autoreload

1

Bạn có thể làm điều đó bằng cách sửa đổi python-run và buộc quá trình Python khởi động lại:

;; 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


Giải pháp tuyệt vời! Bạn đã cứu tôi vài giờ! Cảm ơn bạn!
DmitrySemenov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.