Skip to content

Python 模块导入和包管理

在 Python 中,如果你想让同级文件夹中的两个文件相互导入,可以使用相对导入或绝对导入。

假设你有以下目录结构:

markdown
复制代码
project/

├── a/
│   ├── __init__.py
│   └── a.py

└── b/
    ├── __init__.py
    └── b.py

现在,你想要在 file1.py 中导入 file2.py 中的内容,同时在 file2.py 中导入 file1.py 中的内容。

  1. 包初始化问题: 确保每个目录都包含一个 __init__.py 文件。这个文件可以是空文件,但必须存在于每个目录中,以使 Python 将其识别为包。如果缺少这些文件,导入可能无法正常工作。

  2. 路径问题: 确保 Python 可以正确地找到你要导入的模块。你可以检查 Python 的 sys.path 变量来查看 Python 解释器搜索模块的路径。如果模块所在的目录不在 sys.path 中,你需要手动添加路径。你可以通过以下方式添加路径:

  3. a.py文件里有如下内容

    shell
    def a():
    	return "a"
  4. b.py文件里有如下内容

    python
    import os
    import sys
    
    current_dir = os.path.dirname(__file__)
    
    # 获取当前文件的上级目录
    parent_dir = os.path.dirname(current_dir)
    
    # 添加 demo 目录到 Python 的搜索路径中
    a = sys.path.append(parent_dir)
    # 现在你可以导入你想要的模块了
    from a.a import a
    
    print(a())

Released under the MIT License.