ModuleNotFoundError: Python 3.6 не находит модули, в то время как Python 3.5 делает

Я хотел обновить свою версию python с 3.5 до 3.6. Так как я использую WinPython, Я загрузил и установил последнюю версию так же, как и раньше с версией 3.5.

однако, если я использую версию 3.6 я получаю ModuleNotFoundError всякий раз, когда я импортирую самостоятельно созданный модуль. Минимальный пример: я создал файл t1.py С pass заявление и файлом t2.py содержащий следующий код:

import t1
print("done")

оба файла в та же папка D:MyProjectsrc. Теперь, когда я запускаю файл с python 3.5, все работает нормально:

'C:Program FilesWinPython-64bit-3.5.1.2python-3.5.1.amd64python.exe' D:MyProjectsrct2.py
done

однако, с python 3.6 я получаю

'C:Program FilesWinPython-64bit-3.6.0.1Qt5python-3.6.0.amd64python.exe' D:MyProjectsrct2.py
Traceback (most recent call last):
  File "D:MyProjectsrct2.py", line 6, in <module>
    import t1
ModuleNotFoundError: No module named 't1'

у меня закончились идеи, что проблема может быть и будет ценить новое вдохновение.

1 ответов


будет ли это работать ? в t2.py

import os
__path__=[os.path.dirname(os.path.abspath(__file__))]
from . import t1
print("t2 done")

Python-3.6 изменяет свой способ работы с " python._pth " файл рядом с python.exe (вместо " pyvenv.cfg" в предыдущих версиях)

Если вы не хотите изменять свой источник, вам нужно добавить "D:\MyProject\src-линия на Python._pth файл или относительный путь к нему из python._pth месте. в моем примере, это работает с:

python36.zip
DLLs
Lib
.
..\test
import site

"http://bugs.python.org/issue29578?@ok_message=msg%20287921%20created%0Aissue%2029578%20message_count%2C%20messages%20edited%20ok&@template=item"

другое, более простое решение, если у вас нет установленного системой python: переименуйте "python._pth "файл, рядом с" python.exe", как " pythonzz._pth"

сопровождающий Python "Windows" только что написал, что более простое решение должно быть в порядке и с Python-3.6.0.