在Jupyter Notebook调用.py文件函数时,Python包应导入到何处?
问题原因与解决方案
问题出在模块命名空间隔离:functions.py是独立的Python模块,有自己的命名空间,你在Jupyter Notebook里导入的statsmodels不会共享给这个模块。当my_fk()执行时,它会在自身模块(也就是functions.py)的命名空间里找sm,但这个模块里没导入,所以触发NameError。
正确的做法是:把statsmodels.api导入到functions.py文件内部,而不是只在Notebook里导入。
具体修改步骤
- 编辑你的
functions.py文件,在开头导入statsmodels:
# functions.py import statsmodels.api as sm def my_fk(): # 这里写你使用sm的业务逻辑,比如: # 示例代码,根据你的实际需求调整 data = sm.datasets.get_rdataset("mtcars").data # ...其他操作
- 在Jupyter Notebook里,只需要导入
my_fk函数即可(如果Notebook自己要用到statsmodels,可以单独导入,但不影响函数运行):
# Jupyter Notebook from functions import my_fk # 直接调用函数,不会再报错 my_fk()
补充说明
- 每个Python模块(.py文件)的命名空间是独立的,模块内的函数依赖的包/变量,必须在该模块内部导入或定义。
- 如果你在Notebook里导入
sm,那只是Notebook的命名空间里有这个别名,和functions.py的命名空间完全不共享。
内容的提问来源于stack exchange,提问作者dingaro
相关产品推荐
相关产品推荐

