首页 > 解决方案 > 在jupyter中导入模块并手动执行函数时,单元格返回“错误模块没有属性”

问题描述

我正在尝试将我的主要功能收集在一个单独的 .py 模块中,我将其导入到我的 Juptyer Notebook 中。所以我可以在需要的时候调用一个函数。我想保持简单,因为我是 Python 的初学者。

我有两个主要问题:

我读到这在 Python 中是正常的,可以通过放置if __name__ == "__main__":在我想要手动执行的函数之前来防止它。它似乎有效。

有什么建议吗?

db.py - 这是我想收集我的函数的文件

def main():

    print('Credentials required')

    print('Enter User:')
    pass_user = getpass.getpass()

    print('Enter db pssw:')
    pass_clickhouse = getpass.getpass()

if __name__ == "__main__":

    def get_data():
            # ... some other code to get data from database ...
            df_ch = pd.DataFrame(result)

            return df_ch

    df_ch = get_data()

    def seg_data():
            seg_startdate = input('Enter start date (yyyy-mm-dd): ')
            seg_finishdate = input('Enter end date (yyyy-mm-dd): ')
            df_ch_seg = df_ch[(df_ch['event_datetime'] > seg_startdate) 
                            & (df_ch['event_datetime'] < seg_finishdate)]

            return df_ch_seg

    df_ch_seg = seg_data()

在 Jupyter 笔记本中:

In[1]: import ch_db
In[2]: db.get_data() 

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-78c2ac644f6e> in <module>
----> 1 ch_db.get_data()

AttributeError: module 'db' has no attribute 'get_data'

标签: pythonjupyter-notebook

解决方案


推荐阅读