无法从子文件夹运行 Python3 脚本 // 相对导入错误

我有一个像这样的简单项目结构:


➜  (venv:evernote) evernote_bear_project git:(master) ✗ tree | grep -v pyc

.

├── README.md

...

(snip)

...

├── manage.py

├── sample

│   ├── EDAMTest.py    <==== here is an import that won't work

│   └── enlogo.png

└── util

    ├── __init__.py

    ├── files.py        <====== This is being imported

    └── test_files.py

现在我有一个相对导入sample/EDAMTest.py:


from ..util.files import * 

当我尝试python sample/EDAMTest.py在命令行中从项目根文件夹运行时,我收到一条错误消息:


ValueError: attempted relative import beyond top-level package

我知道这已经被问过很多次了,但我仍然不明白。


由于我是从项目根目录运行脚本,因此在我的理解中Python应该能够“知道”当我尝试导入from ..util.files import *时,它应该上升一个directory,不是吗?


梵蒂冈之花
浏览 103回答 3
3回答

当年话下

sys.path.append()&nbsp;是一个调整,如果您的目录结构是固定的并且您无能为力。否则,您可以尝试重新排列文件夹。最简单的方法是将 util 移到 sample 下,另一个选项是将两个文件夹 psrt 都放在一个更大的包中。也import *没有被包围。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python