我具有以下文件结构:
13
在Project
app.py
package_A
__init__.py
a_module.py
package_B
__init__.py
b_module.py
package_C
__init__.py
c_module.py
packageD
__init__.py
d_module.py
内,我正在运行以下导入命令:
d_module.py
我不断收到from package_C.c_module import someFunc
。从项目目录中使用pipenv shell到项目目录中添加ModuleNotFoundError: No module named 'package_C'
,我尝试了许多不同的方法。同时创建一个虚拟环境。
现在,因为我刚启动项目,所以app.py文件为空,是问题吗?
答案 0 :(得分:0)
对于像pycharm这样的IDE,它将自动将父目录添加到路径,因此,手动运行时,由于未在父目录中列出,因此将找不到软件包。
请参见以下示例:
# file: B.__init__.py
try:
from A import a
print("IDE import")
except ImportError:
from os import getcwd
from sys import path
path.append(getcwd() + "/..")
from A import a
print("without IDE")
print(a)
输出-在IDE中:
IDE import
<module 'A.a' from 'Z:\\github\\StackOverFlow\\A\\a.py'>
终端输出:
without IDE
<module 'A.a' from 'Z:\\github\\StackOverFlow\\B/..\\A\\a.py'>
当目录再次嵌套在项目目录中时,这种情况也会改变,在这种情况下,它将始终与except
块中使用的路径插入一起导入。
答案 1 :(得分:0)
我猜测[...assetListItems]
.filter(item => item.id !== id)
.map((item, index) => ({
...item,
id: index,
}));
文件夹中的__init__.py
是空白吗?
仅将package_C
放在package文件夹中并不会自动授予您访问包中所有模块的权限。您只能访问__init__.py
文件中导入的模块。
这是因为导入包时,python运行__init__.py
文件中的所有模块,并将它们添加到符号表中。
如果在__init__.py
文件中添加import c_module
,则应该能够从__init__.py
导入任何对象。