Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-尝试在没有已知父包的情况下进行相对导入_Python - Fatal编程技术网

Python-尝试在没有已知父包的情况下进行相对导入

Python-尝试在没有已知父包的情况下进行相对导入,python,Python,具有以下文件夹结构: foo.py dir/ bar.py 我正试图从bar.py导入foo.py中的函数,如下所示: bar.py from ..foo import func def func(): pass foo.py from ..foo import func def func(): pass 但我得到: ImportError: attempted relative import with no known parent package 我该

具有以下文件夹结构:

foo.py
dir/
   bar.py
我正试图从
bar.py
导入
foo.py
中的函数,如下所示:

bar.py

from ..foo import func
def func():
   pass  
foo.py

from ..foo import func
def func():
   pass  
但我得到:

ImportError: attempted relative import with no known parent package

我该怎么做


ps:
\uuuu init\uuuuu.py
文件在两个级别都有,但被省略了。

假设您的结构如下:

root/
   foo.py
   dir2/
      bar.py
bar.py
中,可以执行以下操作:

import sys
path = "the/absolute/path/to/root"
sys.path.append(path)
from foo import func

# your code here
我用它来处理这个问题

pip install repackage


import repackage
repackage.up()
from foo import func

在很多情况下,重新包装可以使相对进口变得非常容易

不确定答案,但很高兴投票支持这个问题,因为有一个很好的最小重复性的例子和一个对其他人可能有用的通用问题。@alani谢谢。请随意给出你的答案。Leminnguyenhust的答案如果被我写的评论修改的话,对你有用。(在其当前形式中,仅当当前目录是
root
的父目录时,它才起作用)当出现该错误时,您如何运行bar.py?它是顶级脚本还是由其他东西导入的?可能会有帮助:您使用
“root”
是有问题的,因为它假设了流程的当前工作目录。与
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。这是个好主意。但是当您在
vscode
上运行代码时,使用
root
就足够有效了