繁体   English   中英

想在Jupyter Notebook(Anaconda)中保存并运行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

  1. iPython笔记本和python脚本(.py)位于同一个文件夹中。
  2. 在该目录中添加了空的__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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM