打包后NameError Python 代码

NameError after packaging Python code

我一直在使用 IPython 一段时间,而无需打包代码。我浏览了以下页面并为我的模块设置了目录结构,现在使用 IPython 启动程序。

https://docs.python.org/3/reference/import.html

https://docs.python.org/3/tutorial/modules.html

http://pythoncentral.io/how-to-create-a-python-package/

这是我的设置要点

根目录

  1. 模块(目录)

    1.1 external.py

    1.2 getdata.py

  2. driver.ipynb

我创建了一个名为 modules 的目录并创建了两个文件。

模块(目录)

-- external.py(包含以下内容)

import glob # and many other import statements

-- getdata.py(包含以下内容)

def funcname():
    file_list = glob.glob("Data/")

def other_func():
    x = x + 3

现在我 运行 在 IPython notebook

中输入以下代码
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

运行 glob.glob("Data/") 在IPython笔记本中没有给出任何错误。

如何在不重命名任何函数的情况下解决此命名空间问题?我有十几个函数,它们都有同样的问题。

编辑 1:- 我忘了提及 我已经尝试过的东西

在 getdata.py

中导入语句
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