
[英]Jupyter notebook & Anaconda won't run after reinstalling python
[英]Want to save & run Python script in Jupyter Notebook (Anaconda)
这里有另一个蟒蛇新手。 目前,我在anaconda框架中使用Jupypter笔记本。
为了使用iPython Notebook继续我的项目,
我需要在笔记本上运行一些python脚本(tp.py文件)。
from tp import wordtoplural
因为,它使生活变得更容易,而不是在笔记本本身定义所有功能。
我怎么能这样做,目前导入错误发生在我的代码上。
ImportError: cannot import name wordtoplural
__init.py__
文件。 确保您的ipython笔记本与python脚本位于同一文件夹中。 此外,您可能必须在与python脚本相同的文件夹中创建一个空的__init__.py
文件,以使导入工作。
由于您可能正在修改您的python脚本并直接在您的笔记本上进行测试,您可能会对autoreload插件感兴趣,该插件将使用您在python脚本中所做的更改自动更新导入的模块:
%load_ext autoreload
%autoreload 2
请注意,您需要在调用autoreload插件后放置导入。
另请注意,在某些情况下,您可能需要在IPython笔记本中将其添加到第一个单元格的最顶部(在%magics之后):
from __future__ import absolute_import
限制:autoreload通常可以很好地重新加载模块代码的任何部分,但是有一些例外,例如新类方法:如果添加或更改方法的名称,则必须重新加载内核! 否则它将继续加载此方法的旧定义或在解决方案中失败(未找到方法),当您重载魔术方法时可能会特别困惑(因此在这种情况下,将调用默认魔术方法而不是您的定义!)。 然后一旦定义了方法名并重新加载了内核,就可以自由地修改这个方法的代码,新代码将自动重新加载。
如果你在更改的类中使用super()调用它也将失败,如果发生这种情况,你还必须重新加载内核。
哦,我找到了我想要的解决方案。
在Jupyter Notebook中,您可以直接将单元格转换为python脚本。
我在ipython教程上找到了它,你可以参考这个[.ipynb文件]
通过在笔记本电脑中执行下面的单元格,您可以直接转移您的
代码到同一目录下的.py文件中。
%%writefile textproc.py
def plural(word):
if word.endswith('y'):
return word[:-1] + 'ies'
elif word[-1] in 'sx' or word[-2:] in ['sh', 'ch']:
return word + 'es'
elif word.endswith('an'):
return word[:-2] + 'en'
else:
return word + 's'
然后,您可以通过导入此.py文件来检索它。
from textproc import plural
plural('wish')
但是,我无法弄清楚如何访问保存在另一个目录中的任何.py文件(导入过程..或等)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.