找不到Python模块?

0 投票
2 回答
909 浏览
提问于 2025-04-16 11:45

我刚开始学习Python,想了解如何正确设置一个模块。

我有以下内容:

 dir1
    pack1.py
        dir2
           pack2.py

...当然在我的文件夹里有一个 __init__.py 文件。

现在,我想让 pack2.py 继承自 pack1.py。

我得到了以下内容:

class Pack2(Pack1):
    def __repr__(self):
       ....my code goes here....

我想把这个导入到我的程序中,这样我就可以使用 Pack2 了。

我的问题是:我在搞清楚在我的程序和 pack2.py 文件中该使用什么导入语句时遇到了很大的困难。

我在我的程序中尝试了:

from dir1.dir2 import pack2

而在 Pack2 中

from dir1 import pack1

但是没有成功。这看起来对吗?

2 个回答

2

你设置过你的Python路径吗?如果没有设置,Python解释器可能找不到你所有的模块。

每个脚本所在的文件夹都会在Python路径中,这样模块就可以导入同一个文件夹或者更低层文件夹中的其他模块。不过,如果模块需要从上层文件夹导入东西,就需要做一些额外的工作。

解决办法是修改sys.path:

import sys
# Add parent directory to path
sys.path.append('..')
2

在Python中,使用 import module 并不会把模块里定义的所有名字直接放到当前的命名空间里,也就是说你不能直接使用这些名字。你需要用 module.name 的方式来访问它们。如果你想让模块里定义的所有名字都能直接使用,你需要这样做: from module import *

要准确找出问题所在,你需要查看你的 __init__.py 文件的内容。不过假设这些文件是空的,只是为了把子目录当作模块使用,那么我觉得你应该这样做:

  • 在主程序中使用 from dir1.dir2.pack2 import Pack2
  • 在 pack1.py 中则应该使用 from dir2.pack2 import Pack2

撰写回答