找不到Python模块?
我刚开始学习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