बफर चलाते समय पुन: आयात मॉड्यूल के लिए पायथन शेल को कैसे बाध्य किया जाए?


9

मैं पायथन शेल को बफर भेजने के लिए Cc Cc का उपयोग कर रहा हूं। बफर में शुरुआत में आयात होता है। मैंने पाया कि यदि मैं अपने द्वारा आयात किए जा रहे मॉड्यूल को संशोधित करता हूं, तो यह परिवर्तनों को प्रतिबिंबित नहीं करता है यदि मैं बफर को फिर से सीसी सीसी के साथ चलाता हूं (ऐसा लगता है कि अवर पायथन केवल एक बार आयात कर रहा है)।

मैं पहले से ही बफर के पहले रन में कहे जाने वाले मॉड्यूल को फिर से आयात करने के लिए पायथन शेल को कैसे मजबूर कर सकता हूं?

जवाबों:


9

आप किसी मॉड्यूल को स्पष्ट रूप से लोड कर सकते हैं जैसे:

import mymodule
import imp
imp.reload(mymodule)

अजगर के लिए = = 3.1 आपको इसके बजाय आयात का उपयोग करना चाहिए। यहाँ और यहाँ देखें ।
सार्थक यूजरनाम

4

यह मेरा काम है। मैं ipython का उपयोग करने के लिए emacs सेट करता हूं

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

फिर ~ / .ipython / profile_default / स्टार्टअप / 00-ipython_init.py में। मैं इसे हटा रहा हूं:

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

फिर मैं इसे टाइप करता हूं जब भी मैं संशोधित करता हूं और अपने मॉड्यूल को ipython में फिर से लोड करना चाहता हूं। मुझे यह पसंद है क्योंकि यह सभी मॉड्यूल के लिए काम करता है और मुझे आयात निर्भरता के बारे में चिंता करने की ज़रूरत नहीं है।

%autoreload

1

आप इसे अजगर-चाल को संशोधित करके और पायथन प्रक्रिया को फिर से शुरू करने के लिए मजबूर कर सकते हैं:

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


अद्भुत समाधान! आपने मुझे कुछ घंटे बचाए! धन्यवाद!
दिमित्रीमेनोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.