这是我的文件结构。
/working dir
__init__.py
main.py
/packages
__init__.py
snafu.py
/subfolder1
__init__.py
foo.py
/subfolder2
__init__.py
bar.py
/many_more
...
如果我运行main.py
,我会尝试导入from subfolder1.foo import something
但是foo.py
会尝试import subfolder2
,因为找不到subfolder2
而无效。
要进入每个文件并将每个import语句更改为from packages.a_subfolder.whatever import something
我已将/packages
添加到sys.path
,但我不想这样做。有没有办法使用__init__.py
文件解决这个问题?
是否会在/ packages __ init __。py 文件中添加import *
?
many_more /文件夹是我下载的第三方软件包,因为我在不同的计算机上工作,而不是在我工作的每台计算机上安装软件包,只使用文件夹中的软件包。 例如:要在程序中使用googledrive,您需要大约10个不同的软件包才能使其正常工作。
答案 0 :(得分:0)
在您的情况下,您似乎想要导入父模具中存在的模块。 在要从中导入模块的文件中的以下代码应该可以工作:
import sys
sys.path.append('.')
sys.path.append('..')
答案 1 :(得分:0)
所以看起来唯一有效的方法就是添加
import sys, os
packagepath = os.getcwd() + '/packages'
sys.path.append(packagepath)
到/ packages __init__.py
文件并使用它来调用它
from packages.subfolder1.foo import something