t133
V2EX  ›  Python

Python 导入包顺序的先后可能改变代码行为?

By t133 at 2023 年 5 月 27 日 · 3076 次点击

各位大佬,小弟最近碰到了一个非常诡异的 bug. 先导入 torch 后导入这个 package 就会出现异常。 感觉可能是导入的时候定义了全局变量? 详情可以看我这个 issue https://github.com/tblite/tblite/issues/110 目测 torch 的锅的可能性应该不大吧

11 条回复  •  2023-05-31 14:35:12 +08:00
iorilu
   1
iorilu  
   2023 年 5 月 27 日 via Android
当然有关系

Python 经常有循环导入,不注意顺序根本运行不了
flyqie
   2
flyqie  
   2023 年 5 月 28 日 via Android
这有啥意外的吗。。

不仅 python ,很多语言都会这样,习惯就好。。

遇上了就算点背,调试可能得好久。
asmoker
   3
asmoker  
   2023 年 5 月 28 日 via Android
版本问题?
miaotaizi
   4
miaotaizi  
   2023 年 5 月 29 日
有没有好的方案能避免循环导入, 我也被这个问题搞得头大
Latin
   5
Latin  
   2023 年 5 月 29 日
@miaotaizi 把类似 util 函数相关的导包放入函数内部 避免启动时候循环导包
rev1si0n
   6
rev1si0n  
   2023 年 5 月 29 日
会,有时候还会根据导入顺序给一些模块打个补丁
akaHenry
   7
akaHenry  
   2023 年 5 月 30 日
@miaotaizi 局部 import 啊. 函数内 import 模块.
miaotaizi
   8
miaotaizi  
   2023 年 5 月 30 日
@akaHenry 所以局部 import 没啥毛病么, 好多人说不够优雅...
哈哈
t133
   9
t133  
OP
   2023 年 5 月 30 日 via iPhone
其实我想问 是不是有这种 feature 的包不太符合规范
akaHenry
   10
akaHenry  
   2023 年 5 月 31 日
@miaotaizi 循环引用, 解决冲突的办法就是 local import. 还管啥优雅不优雅.
miaotaizi
   11
miaotaizi  
   2023 年 5 月 31 日
@akaHenry 有些人就是拿这种事情当饭吃
推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
© 2026 V2EX · 36ms · 3.9.8.5