我试图将我的“可执行” python文件放置在/ usr / local / bin /目录中,以便可以在bash中的任何位置调用该程序(超循环)。
但是,其余应用程序存储在另一个目录/ root / superloop /
我在/ root / superloop中有 init .py文件,在/ usr / local / bin /下的文件superloop中我的相对导入路径是:
from ...root.superloop.auditdiff import auditdiff
执行时抛出错误:
Traceback (most recent call last):
File "/usr/local/bin/superloop", line 3, in <module>
from ...root.superloop.auditdiff import auditdiff
ValueError: Attempted relative import in non-package
这是树:
|-- \\
|-- auditdiff.py
|-- __init__.py
|-- multithread.py
答案 0 :(得分:3)
错误告诉您,软件包与目录不同;您不能使用相对导入来导航磁盘结构。
为了使您的“可执行文件”在/root/superloop
中找到软件包,您可以操纵sys.path
来让Python知道在哪里寻找软件包:
sys.path.append('/root/superloop')
from auditdiff import auditdiff