python加载另一个文件夹中的py文件

本文介绍在特定目录结构下如何从一个Python文件导入另一个文件的方法。提供了两种情况下的解决方案:一种是在子文件夹中有__init__.py文件的情况;另一种是没有__init__.py文件时通过sys.path.append方法实现跨文件夹导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

假设文件是这样的分布的

1文件夹

    11文件夹

        111py

        112py

     12py

如果想在12py文件中加载111和112两个py文件,可以选择如下两种方法:

一.

    在11文件夹中必须有__init__.py文件,此时可以直接在12py里面写

    import 11文件夹.111py 

    import11文件夹.112py

二.

如果在11文件夹中没有__init__.py文件,则此时可通过sys来加载。此时在12py里面写

sys.path.append(’/1文件夹/11文件夹‘)

import 111py 

import 112py 

### 如何在 Python 中调用其他文件夹中的 `.py` 文件的函数 在 Python 开发中,跨文件夹调用 `.py` 文件中的函数是一个常见需求。以下是实现这一功能的具体方法: #### 使用 `sys.path.append()` 动态修改路径 可以通过向 `sys.path` 列表追加目标文件夹路径来动态调整模块搜索范围。这样可以使得当前脚本能够找到并加载指定文件夹中的模块。 ```python import sys import os # 假设 B.py 存在于 ../other_folder/ 下 sys.path.append(os.path.abspath("../other_folder")) import B # 导入位于 other_folder 的 B.py 模块 result = B.add(1, 2) # 调用 B.py 中定义的 add 函数 print(result) ``` 这种方法适用于临时性的路径扩展场景[^3]。 --- #### 创建包结构并通过子模块导入 通过创建标准的 Python 包结构(即包含 `__init__.py` 文件),可以使目录成为可导入的模块。这不仅有助于组织代码,还便于维护和分层管理。 假设项目结构如下: ``` project/ │ ├── folder_a/ │ ├── __init__.py │ └── A.py (定义了 add 函数) └── folder_b/ ├── __init__.py └── B.py (希望调用 A.py 的 add 函数) ``` 可以在 `B.py` 中按以下方式导入 `A.py` 并调用其函数: ```python from folder_a.A import add result = add(1, 2) print(result) ``` 这里的关键是确保项目的根目录 (`project`) 已经存在于 `PYTHONPATH` 或者作为工作目录的一部分[^5]。 --- #### PyInstaller 打包注意事项 当使用 PyInstaller 将多文件项目打包成单个可执行文件时,需要注意依赖关系以及资源定位问题。PyInstaller 默认会将所有必要的 `.py` 文件嵌套到最终的 EXE 文件中,但如果某些外部库未被自动检测,则需手动配置。 例如,在命令行中运行以下指令以确保所有相关模块都被正确解析: ```bash pyinstaller --hidden-import=folder_a.A your_main_script.py ``` 此选项告知 PyInstaller 显式包含隐藏的模块引用[^1]。 --- #### 总结代码示例 下面提供了一个完整的例子展示如何在一个文件夹外调用一个文件夹中的函数,并完成简单的计算操作。 **目录结构:** ``` main_project/ │ ├── utils/ │ ├── __init__.py │ └── helper.py (定义了 multiply 函数) └── app/ ├── __init__.py └── main.py (调用了 helper.py 的 multiply 函数) ``` **helper.py:** ```python def multiply(a, b): return a * b ``` **main.py:** ```python from ..utils.helper import multiply if __name__ == "__main__": product = multiply(3, 4) print(f"The result is {product}") ``` 上述代码利用相对导入的方式实现了跨文件夹调用[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值