Python2.7与3.6环境下Biopython导入Seq报错的解决求助
解决无法从Bio.Seq导入Seq的问题
问题根源
你遇到的这个ImportError是典型的模块命名冲突导致的循环导入问题。从报错信息里能看到关键线索:
File "/home/tanuj/Desktop/biopython/scripts-test/string.py", line 1, in <module> from Bio.Seq import Seq
当Biopython的Bio.Seq模块尝试导入Python标准库的string模块时,Python会优先加载你当前工作目录下的string.py文件(而不是系统标准库的string模块)。但你自己的string.py里又写了from Bio.Seq import Seq,这就形成了死循环:Bio.Seq需要string,你的string.py需要Bio.Seq,最终导致无法正确加载Seq类。
解决方案
- 重命名你的自定义文件:把当前目录下的
string.py改成一个不会和标准库/第三方库重名的名字,比如my_sequence_utils.py。 - 清理残留的字节码文件:如果目录下有
string.pyc文件(Python生成的编译后的字节码),一定要删除它,否则Python可能还是会加载旧的缓存文件。 - 重新运行脚本:做完上面两步后,再执行你的代码,应该就能正常导入
Seq并运行了。
注意事项
以后写Python代码时,一定要避免给自己的脚本文件起和Python标准库模块(比如string、sys、os)或者第三方库模块相同的名字,这种命名冲突很容易引发类似的导入错误,排查起来还容易走弯路。
内容的提问来源于stack exchange,提问作者Tanuj Sharma
相关产品推荐
相关产品推荐

