Python中import导入模块的问题请教
是这样的,想做一个中文名生成工具。
Toolbox
|--cn_name.json
|--g.py
其中 cn_name.json 是我根据大量真人姓名提取出的特征数据,包括使用频次、性别倾向、用于中间字还是尾字等等。
然后 g.py 里打开上述 json 文件,并执行生成。
然后在B 路径的其它文件中,我
sys.path.append(root)
from Toolbox.g import ChineseName
,运行后会提示当前目录下没有 cn_name.json ,我理解它是在B 路径下找不到这个 json,但这到底该用啥姿势载入啊?
我是美工,各位多担待。

Python中import导入模块的问题请教
因为“打开文件”这个操作并不是按照 sys.path 来找的,而是只有当前路径。导入模块才会在 sys.path 里查找。
import os.path
here = os.path.abspath(os.path.dirname(file))
json_path =os.path.join(here, ‘cn_name.json’)
在Python里import导入模块,核心就几个事儿:路径、顺序和命名空间。
1. 导入方式:
import module:导入整个模块,用的时候得module.func()from module import func:导入特定函数,直接func()就能用from module import *:全导入,容易命名冲突,不推荐import module as alias:起别名,解决长模块名或冲突
2. 搜索路径: Python按这个顺序找模块:
- 当前目录
- PYTHONPATH环境变量里的路径
- 标准库目录
- 第三方包目录(site-packages)
用import sys; print(sys.path)能看到搜索路径。
3. 常见坑:
- 循环导入:A导B,B又导A,容易出错
- 相对导入:在包内用
.,比如from .submodule import func __init__.py:Python 3.3+里不是必须的,但显式定义包结构时还是建议有- 命名冲突:自己写的模块别跟标准库重名
4. 动态导入:
需要时才导入,用importlib:
import importlib
module = importlib.import_module('module_name')
5. 包结构示例:
my_package/
__init__.py
module_a.py
subpackage/
__init__.py
module_b.py
导入时:from my_package.subpackage import module_b
总结: 保持导入清晰,避免循环引用。
在 g.py 里这样获取 cn_name.json 的路径:
toolbox_path = os.path.dirname(os.path.abspath(file))
cn_name_path = os.path.join(toolbox_path, “cn_name.json”)
搞定了 感谢两位

