Python 在已导入的目录中看不到新模块

问题描述 投票:0回答:1

在此测试中,我创建一个新目录(如果已存在则将其删除),将其添加到

sys.path
,添加两个简单的Python文件,然后尝试导入它们。我正在使用 Python 3.11.6。

import sys
from pathlib import Path
from shutil import rmtree

d = Path('/tmp/fleen')
rmtree(d)
d.mkdir()
sys.path = [str(d)] + sys.path

(d / 'module1.py').write_text('x = 1')
import module1
assert module1.x == 1

(d / 'module2.py').write_text('x = 2')
print('file contains:', repr((d / 'module2.py').read_text()))
import module2
assert module2.x == 2

这会按预期打印

file contains: 'x = 2'
,但随后会引发

Traceback (most recent call last):
  File "example.py", line 16, in <module>
    import module2
ModuleNotFoundError: No module named 'module2'

发生什么事了?为什么

import
看不到文件?
sys.path
中每个目录是否有某种需要清除的缓存?

python python-import
1个回答
0
投票

您是否尝试将

__init__.py
文件添加到要从中导入的模块?

顺便说一句,您可以使用

sys.path.append(d)
代替
sys.path = [str(d)] + sys.path

© www.soinside.com 2019 - 2024. All rights reserved.