python 跨文件夹引用

python实现不同层级目录import 模块的方法

python目前也像php一样越来越多的朋友使用它了,今天 小编在学习python时碰到不同层级引用的问题,希望可以帮助到大家。

一、同级目录下的调用

程序结构如下:

-- src
    |-- mod1.py
    |-- test1.py

若在程序test1.py中导入模块mod1, 则直接使用

import mod1

from mod1 import *;

二、调用子目录下的模块

程序结构如下:

-- src
    |-- mod1.py
    |-- lib
    |    |-- mod2.py
    |-- test1.py

这时看到test1.py和lib目录(即mod2.py的父级目录),如果想在程序test1.py中导入模块mod2.py ,可以在lib件夹中建立空文件__init__.py文件(也可以在该文件中自定义输出模块接口),然后使用:

from lib import mod2

import lib.mod2

三、调用上级目录下的文件

程序结构如下:

-- src
    |-- mod1.py
    |-- lib
    |    |-- mod2.py
    |-- sub
    |    |-- test2.py

这里想要实现test2.py调用mod1.py和mod2.py ,做法是我们先跳到src目录下面,直接可以调用mod1,然后在lib上当下建一个空文件__init__.py ,就可以像第二步调用子目录下的模块一样,通过from lib import mod2进行调用了。具体代码如下:

import sys

import os

# 得到当前根目录

o_path = os.getcwd()

sys.path.append(o_path)
import mod1
from lib importmod2



### Python 文件夹模块导入解决方案 当尝试在 Python文件夹引用模块时,如果遇到 `ModuleNotFoundError` 或者 `'No module named ...'` 的错误,通常是因为 Python 解释器无法找到目标模块所在的路径。以下是几种常见的解决方法: #### 方法一:修改 `sys.path` 可以通过动态调整 `sys.path` 来临时增加模块所在目录Python 的搜索路径中。 ```python import sys import os module_path = "/path/to/module" # 替换为目标模块的实际路径 if module_path not in sys.path: sys.path.append(module_path) # 此后可以直接导入目标模块 import your_module ``` 这种方法适用于运行脚本前手动指定额外的模块路径[^1]。 --- #### 方法二:使用相对导入 如果项目结构清晰,并且各模块之间存在父子关系,则可以利用相对导入来实现文件夹调用。 假设项目结构如下: ``` project/ │ ├── folder_a/ │ └── a.py │ └── folder_b/ └── b.py ``` 在 `b.py` 中要导入 `a.py`,可以在 `folder_b/__init__.py` 和 `folder_a/__init__.py` 文件中定义包初始化逻辑,随后通过以下方式完成导入: ```python from ..folder_a import a ``` 注意:此方法仅支持在同一顶层包内的子模块间相互引用[^3]。 --- #### 方法三:设置环境变量 `PYTHONPATH` 另一种永久性的解决方案是配置操作系统的环境变量 `PYTHONPATH`,使其包含所有自定义模块的位置。例如,在 Linux/MacOS 下可通过命令行执行: ```bash export PYTHONPATH="${PYTHONPATH}:/path/to/modules" ``` 而在 Windows 上则应这样写入批处理脚本或直接编辑系统属性中的 PATH 设置: ```cmd set PYTHONPATH=%PYTHONPATH%;C:\path\to\modules ``` 之后启动的新终端会话都会继承该更改后的值作为默认附加查找位置之一[^2]。 --- #### 方法四:创建软链接 (Symlink) 对于某些特定场景下不希望改动原有代码又想让其他地方能够访问某个固定地址上的资源时,可以考虑建立符号连接(symlinks)。比如在 Unix-like 系统上可以用 ln 命令生成指向实际源码树副本的一个快捷入口;而 NTFS 支持下的 Win7+ 版本也提供了类似的 Junction Points 功能。 --- #### 方法五:打包成独立的应用程序 最后一种极端情况是对最终用户提供完全封装好的产品形式交付成果——即将整个应用连同其所需的一切依赖项一起编译为单个可分发单元。像 PyInstaller 这样的工具可以帮助我们轻松达成这一目的。 ```python pip install pyinstaller pyinstaller --onefile your_script.py ``` 上述指令将会把指定 python 脚本及其关联资料组合起来形成单独 exe 文件(视操作系统定),从而彻底规避掉任何可能因缺少组件而导致崩溃的风险。 --- ### 总结 以上列举了几种常见应对策略用于克服 Python 在多级目录环境中寻找不到外部库件难题的办法。具体采用哪一类取决于个人偏好以及当前项目的实际情况等因素综合考量决定最佳实践方案。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值