python 2.7 相对路径导入上上级模块

python2.7的相对路径导入
scripts
| --test
| | --uint
| | |__init__.py
| | |u_test.py
| |
| |__init__.py
| |...
|
|__init__.py
|voice_text.py
|....

目录结构大概是这样的。怎么从u_test.py导入scripts下的voice_text.py?
1.试过了from ... import voice_text 但是报了错:
ValueError: Attempted relative import in non-package
2.有的博客说python2.会自己检索上层,上上层,不行的吧。
3.我用了这种方法导入了上级模块,但是局限很大,需要从当前文件所在目录执行脚本才行。

import sys
sys.path.append("..")

是否有更好的方法?

阅读 7.4k
1 个回答

主要还是看运行的是哪个程序
如果运行的是
$python u_test.py 那么u_test.py所在文件夹就是顶层目录,不能算包,也就是不能使用相对导入。只能sys.path.append("..."),把scripts目录加入path中 u_test.py使用import voice_text 导入

如果可以是运行scripts下的程序的话,假如
scripts/v.py

u_test.py可以直接导入voice_text.py (import voice_text )也不出错。所以可以在scripts下增加一个程序,导入u_test.py运行

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进