在 Jupyter Notebook 中锁定 Python 代码并使其作为命令可执行

Posted

技术标签:

【中文标题】在 Jupyter Notebook 中锁定 Python 代码并使其作为命令可执行【英文标题】:Lock Python code in Jupyter Notebook and make it executable as command 【发布时间】:2018-10-16 08:28:48 【问题描述】:

我在 4 个不同的单元格中运行以下代码:

单元格1:

import pandas as pd
import numpy as np
import os
reference = pd.read_excel(argument1,sheet_name=argument2,na_values='0',converters='SID': ':0>12'.format) #reference file path
reference.replace('',np.nan,inplace=True)
reference.dropna(how='all',inplace = True)
reference.drop([0],inplace=True)

单元格2:

reference=reference[reference['SType']==argument']

单元格4:

path = argument4
file_list = os.listdir(path)

for i in file_list:
    filename = os.path.join(path, i)
    #ori_df = pd.read_excel(filename)
    df = pd.read_excel(filename)
    cond = pd.Index(df.iloc[0]).intersection(reference.columns)
    df1 = reference[cond].copy()
    #df1.loc[-1] = df1.columns
    d = dict(zip(df.iloc[0], df.columns))
    df1 = df1.sort_index().rename(columns=d)
    x = df1.iloc[:,1:].columns
    df1.dropna(axis=0,how='all',subset=x,inplace=True)
    if len(cond) > 1:
        df1.to_excel(filename,index = False)
    else:
        os.remove(filename)

我想知道有什么方法可以将此代码保存为 .py 文件并使其可执行,只需在 jupyter 单元格中传递参数(如命令行)即可。 Jupyter笔记本允许吗?如果是,请告诉我怎么做。

** 抱歉,如果我在这里无知,我尝试对此进行一些研究,但无法获得任何信息。

【问题讨论】:

【参考方案1】:

只需使用 nbconvert --to script 选项。

jupyter-nbconvert --to script path/to/your/notebook.ipynb  

您将无法使用命令行传递自定义参数,这需要进一步自定义生成的脚本。

Relevant documentation

将笔记本转换为可执行脚本。这是最简单的方法 获取 Python(或其他语言,取决于内核)脚本 出笔记本。如果 Jupyter 笔记本中有任何魔法, 这可能只能从 Jupyter 会话中执行。

【讨论】:

【参考方案2】:

不久前我也有同样的问题^^

我不确定我的回答是否符合您的期望,但我是这样做的:

假设你的文件是这样的:

+
|  my_notebook.ipynb
| + folder1
| | my_script.py

假设你在文件my_script.py中有一个函数run_script()

那么你可以这样做:

import folder1.my_script as ms

ms.run_script()

为了能够将您的脚本作为包/模块调用,您需要在正确的位置创建空的__init__.py 文件。所以你的树应该是这样的:

+
|  __init__.py
|  my_notebook.ipynb
| + folder1
| |  __init__.py
| | my_script.py

【讨论】:

以上是关于在 Jupyter Notebook 中锁定 Python 代码并使其作为命令可执行的主要内容,如果未能解决你的问题,请参考以下文章

jupyter notebook

Jupyter Notebook安装新python kernel

py3.5启动jupyter notebook的问题

在 Jupyter Notebook 中导入期间未找到模块

从 Jupyter Notebook 中的文件“main.py”传输代码

python JUPYTER:vi~ / .jupyter / jupyter_notebook_config.py