سؤال

هذا السؤال لديه بالفعل إجابة هنا:

هل هناك طريقة للحصول على iPython تلقائيا إعادة تحميل جميع التعليمات البرمجية التي تم تغييرها؟ إما قبل تنفيذ كل سطر في قذيفة أو فشل ذلك عند طلب ذلك على وجه التحديد. أقوم بعمل الكثير من البرمجة الاستكشافية باستخدام IPYTHON و SCIBY، إنه لألم يتعين عليه إعادة تحميل كل وحدة يدويا كلما قمت بتغييره.

هل كانت مفيدة؟

المحلول

ل ipython الإصدار 3.1، 4.x، و 5.x

%load_ext autoreload
%autoreload 2

ثم الوحدة الخاصة بك ستكون إعادة تحميل تلقائي بشكل افتراضي. هذا هو الوثيقة:

File:       ...my/python/path/lib/python2.7/site-packages/IPython/extensions/autoreload.py

Docstring:
``autoreload`` is an IPython extension that reloads modules
automatically before executing the line of code typed.

This makes for example the following workflow possible:

.. sourcecode:: ipython

   In [1]: %load_ext autoreload

   In [2]: %autoreload 2

   In [3]: from foo import some_function

   In [4]: some_function()
   Out[4]: 42

   In [5]: # open foo.py in an editor and change some_function to return 43

   In [6]: some_function()
   Out[6]: 43

The module was reloaded without reloading it explicitly, and the
object imported with ``from foo import ...`` was also updated.

هناك خدعة: عندك ننسى الكل من أعلاه عند استخدام ipython, ، حاول فقط:

import autoreload
?autoreload
# Then you get all the above

نصائح أخرى

كما ذكر أعلاه، فأنت بحاجة إلى autoreload تمديد. إذا كنت تريد أن تبدأ تلقائيا في كل مرة تقوم فيها بإطلاق ipython, تحتاج إلى إضافته إلى ipython_config.py ملف بدء التشغيل:

قد يكون من الضروري إنشاء واحد أولا:

ipython profile create

ثم تضمين هذه الخطوط في ~/.ipython/profile_default/ipython_config.py:

c.InteractiveShellApp.exec_lines = []
c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
c.InteractiveShellApp.exec_lines.append('%autoreload 2')

بالإضافة إلى تحذير اختياري في حال كنت بحاجة إلى الاستفادة من رمز Python المترجمة في .pyc الملفات:

c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in ipython_config.py to improve performance." ')

تحرير: يعمل أعلاه مع الإصدار 0.12.1 و 0.13

المنقحة - يرجى الاطلاع Andrew_1510 إجابه أدناه، كما تم تحديث ipython.

...

كان من الصعب قليلا معرفة كيفية الوصول إلى هناك من تقرير علة المتربة، ولكن:

انها السفن مع ipython الآن!

import ipy_autoreload
%autoreload 2
%aimport your_mod

# %autoreload? for help

... ثم في كل مرة تتصل your_mod.dwim(), ، سوف تلتقط أحدث إصدار.

إذا قمت بإضافة ipython_config.py إلى ~ / .ipython / profile_default dir مع خطوط مثل أدناه، فسيتم تحميل وظائف التشغيل التلقائي على بدء تشغيل iPython (تم اختباره في 2.0.0):

print "--------->>>>>>>> ENABLE AUTORELOAD <<<<<<<<<------------"

c = get_config()
c.InteractiveShellApp.exec_lines = []
c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
c.InteractiveShellApp.exec_lines.append('%autoreload 2')

يمكنك استخدام:

  import ipy_autoreload
  %autoreload 2 
  %aimport your_mod

هناك امتداد لذلك، لكن ليس لدي أي تجربة استخدام بعد:

http://ipython.scipy.org/ipython/ipython/attachment/ticket/154/ipy_autoreload.py.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top