Python 2.7导入constants.py常量报错NameError:LOCAL未定义求助
解决Python 2.7导入全局常量时的NameError问题
嘿,我来帮你捋捋这个问题!你遇到的NameError本质上是Python没找到你定义的constants.py模块,导致那些常量根本没被成功导入,自然就报“未定义”啦。
咱们先看文件结构:你的main.py在project根目录,而constants.py在project/folder子目录里。直接写from constants import *的话,Python只会在当前脚本所在目录(也就是project)和系统默认路径里找模块,根本不会去folder里搜,这就是问题的核心。
下面给你几个实用的解决办法:
方法1:用正确的模块路径导入(最推荐)
既然constants.py在folder子目录下,你只需要把导入语句改成带目录的形式就行:
from folder.constants import *
这样Python就能准确找到folder里的constants.py,顺利导入所有常量。
方法2:手动把folder添加到Python搜索路径
如果你不想改导入语句,可以在main.py的最开头加上这段代码,把folder目录加入Python的模块搜索路径:
import sys import os # 获取当前main.py所在的目录,拼接上folder路径,添加到sys.path sys.path.append(os.path.join(os.path.dirname(__file__), 'folder')) from constants import *
这样Python就会去folder里找constants.py了。
方法3:确保folder是合法的Python模块(基础前提)
Python 2.7要求,只有包含__init__.py文件的文件夹才能被当作模块。你可以检查一下project/folder目录下有没有这个文件——如果没有,新建一个空的__init__.py就行。不过这个是基础,主要问题还是前面的导入路径哦。
最后再啰嗦一句:Python导入模块的时候对文件层级特别敏感,不同目录下的模块一定要用正确的路径导入,不然解释器可找不到你要的文件~
内容的提问来源于stack exchange,提问作者HilaD
相关产品推荐
相关产品推荐

