gpt4 book ai didi

python - Python代码打包后出现NameError

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:04 25 4
gpt4 key购买 nike

我已经使用 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 外部.py

    1.2 getdata.py

  2. 驱动程序.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 笔记本中运行以下代码

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 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

关于python - Python代码打包后出现NameError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38159295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com