python import 踩坑指南 / sys.path失效解决方案

本文介绍了在使用thrift时遇到的Python import问题,由于thrift生成的Python文件采用相对引用,当起始运行文件路径不在thrift_folder内时,会导致引用错误。文章探讨了修改所有import和修改os.path的两种历史解决方案及其存在的问题,并重点讲解了如何避免sys.path.append的陷阱以及处理sys.modules缓存导致的导入问题,提供了解决此类问题的详细步骤。

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

不关心故事背景的朋友们可以直接跳到“解决方案”~

故事背景

最近在用thrift的时候遇到一个问题,thrift生成的python文件之间的引用都是相对引用的:

thrift_folder
├── base
│   ├── constants.py
│   ├── __init__.py
│   └── ttypes.py
├── model
│   ├── __init__.py
│   ├── constants.py
│   ├── ttypes.py

# model/ttypes.py
import base.ttypes

如果python起始运行文件路径不在thrift_folder内,那么引用就会有错误。

历史方案

老前辈们提供了两种解决方案

  • 修改所有的import
  • 修改os.path

前者的问题在于,即使用脚本在每个thrift前面写from thrift_folder import base(不能图省事先加一个__all__ = bulabula然后from thrift_folder import *

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值