Python在同一目录中创建/导入自定义模块

9 投票
1 回答
17915 浏览
提问于 2025-04-17 00:26

我正在尝试创建一个简单的Python脚本,并导入几个自定义的类。我想把这些都放在一个模块里。以下是我的文件结构:

point/point.py

class Point:
   """etc."""

point/pointlist.py

class PointList:
   """etc."""

point/__init__.py

from . import point, pointlist

script.py

import sys, point
verbose = False
pointlist = PointList()

当我运行 script.py 时,出现了 NameError: name 'PointList' is not defined 的错误。

奇怪的是,在point/文件夹里,所有三个模块文件(__init__、pointlist、point)都有了一个之前没有的 .pyc 版本,这说明它似乎找到了这些文件。而且这些类文件本身也没有任何错误地编译。

我觉得我可能遗漏了一些非常简单的东西,所以请耐心点。

1 个回答

12

抱歉,我好像在之前的回答和评论中犯了个错误:

这里的问题是,你应该通过你导入的模块来访问point里的对象:

point/__init__.py:

from point import Point
from pointlist import PointList

script.py:

import sys, point
verbose = False
pointlist = point.PointList()

你可以通过导入point来访问PointList,因为point会导入__init__.py里面的内容。

如果你想直接访问PointListPoint,可以在script.py中使用from point import Point, PointList,或者不太推荐的方式from point import *

再次为我之前的错误表示歉意。

撰写回答