簡體   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