打包Python代码后出现NameError
我已经使用IPython有一段时间了,而不必打包代码。我浏览了以下几页,为我的模块设置了一个目录结构,现在使用IPython启动程序 以下是我的设置要点 根foder打包Python代码后出现NameError,python,python-module,Python,Python Module,我已经使用IPython有一段时间了,而不必打包代码。我浏览了以下几页,为我的模块设置了一个目录结构,现在使用IPython启动程序 以下是我的设置要点 根foder 模块(目录) 1.1外部的.py 1.2 getdata.py import glob def funcname(): file_list = glob.glob("Data/") def other_func(): x = x + 3 driver.ipynb 我创建了一个名为modules的目录,并创
import glob
def funcname():
file_list = glob.glob("Data/")
def other_func():
x = x + 3
from modules import external
from modules.getdata import *
# so that I can funcname() instead of modules.getdata.funcname()
other_func() # runs as expected
funcname() # NameError global name 'glob' is not defined
在IPython笔记本中运行glob.glob(“Data/”)不会显示任何错误
如何在不重命名任何函数的情况下修复此命名空间问题?我有十几个函数,它们都有相同的问题
编辑1:-我忘了提到我已经试过的东西
getdata.py中的import语句
import glob
def funcname():
file_list = glob.glob("Data/")
def other_func():
x = x + 3
我有多个使用glob的文件。除了在每个文件中导入模块,还有其他更好的选择吗?在
getdata.py
中添加import glob
(使用glob
模块的地方),而不是在external.py
中
import glob # <--
def funcname():
file_list = glob.glob("Data/")
def other_func():
x = x + 3
import glob#我想到了,会不会是慢下来的东西?我有几个文件使用glob,所以我必须在每个文件中导入它。为什么我的方式不起作用?@AbhirathMahipal,import
在其他文件中不会影响其他模块的命名空间。@AbhirathMahipal,如果模块导入到某个模块中,则在另一个模块中再次导入该模块不会重新加载它,而是重用已导入的模块。@AbhirathMahipal,您可以使用打印某些内容的自定义模块进行试验。尝试在模块中导入一次,然后在模块中导入;您将看到该内容只打印一次。@AbhirathMahipal,您可以污染上次搜索的内置模块,但不推荐使用;这将使您的代码难以理解。无论如何,它在这里:import glob__builtins_uu.glob=glob
将此行放入文件中,保证始终执行/导入该行。
import glob # <--
def funcname():
file_list = glob.glob("Data/")
def other_func():
x = x + 3