簡體   English   中英

ipython自動重載不起作用

[英]ipython autoreload doesn't work

autoreload 在子目錄中根本不適合我。

目錄結構:

run.ipynb
oof.py
pertussis/
    |-- __init__.py

run.ipynb我有(用筆記本運行):

from pertussis import *
check() #defined in the module

這不起作用。 我什么都試過了。 我在代碼中、配置文件中、到處都添加了自動重載魔法。 我還將模塊的文件夾添加到 sys.path 列表中。 從來沒有重載過。 我嘗試從筆記本重新加載常規文件oof.py ,而不是直接加載模塊。

oof.py我有:

from pertussis import *
def check_2():
  print ("Hello")

現在發生的是 check_2 已成功自動重新加載,但模塊中的檢查仍未重新加載。

似乎沒有任何效果,我迷路了。

對於遲到的回復感到抱歉,我偶然發現了類似的問題。

在你的run.ipynb中 ,你嘗試過:

import pertussis
pertussis.check()

要么

%load_ext autoreload 
%autoreload 1

然后

%aimport pertussis
check = pertussis.check  # optional shortcut
check()

我不認為這是一個 iPython 問題,而是由於from import 的性質。

以下來自Learning Python Oreilly, p798(第 5 版)

...因為在運行時from副本(分配)名稱中,沒有鏈接返回到名稱來自的模塊。 使用from導入的名稱簡單地成為對對象的引用,當from運行時,這些對象恰好被導入者中的相同名稱引用。

一種解決方法是使用import和名稱限定。 例如:

import pertussis
pertussis.check()

然后在oof.py

import pertussis # now must use full name qualification
def check_2():
  print ("Hello")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM