Arabellek çalıştırırken bir Python kabuğunu modülleri yeniden içeri aktarmaya zorlama


9

Python kabuğuna bir tampon göndermek için Cc Cc kullanıyorum. Arabellek başında bir içe aktarma var. İçe aktardığım modülü değiştirirsem, tamponu tekrar Cc Cc ile çalıştırırsam değişiklikleri yansıtmadığını fark ettim (Inferior Python, içe aktarmayı yalnızca bir kez yapıyor gibi görünüyor).

Python kabuğunu, arabelleğin ilk çalıştırılmasında zaten çağrılan modülleri tekrar almaya nasıl zorlayabilirim?

Yanıtlar:



4

Bu benim iş akışım. Emacs'ı ipython kullanacak şekilde ayarladım

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

Sonra ~ / .ipython / profile_default / startup / 00-ipython_init.py Aşağıdakileri koydum:

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

Sonra ne zaman değiştirmek ve ipython içinde modüllerimi yeniden yüklemek istediğinizde bunu yazın. Bunu seviyorum çünkü tüm modüller için çalışıyor ve ithalat bağımlılıkları konusunda endişelenmem gerekmiyor.

%autoreload

1

Bunu, python çalıştırmasını değiştirerek ve Python işlemini yeniden başlamaya zorlayarak yapabilirsiniz:

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


Harika bir çözüm! Beni birkaç saat kurtardın! Teşekkür ederim!
DmitrySemenov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.