2017-02-16 11 views
6

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

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

import t1 
print("done") 

Оба файла находятся в одной и той же папке D:\MyProject\src. Теперь, когда я запускаю файл с питоном 3.5, все работает отлично:

'C:\Program Files\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\python.exe' D:\MyProject\src\t2.py 
done 

Однако с питоном 3.6 я получаю

'C:\Program Files\WinPython-64bit-3.6.0.1Qt5\python-3.6.0.amd64\python.exe' D:\MyProject\src\t2.py 
Traceback (most recent call last): 
    File "D:\MyProject\src\t2.py", line 6, in <module> 
    import t1 
ModuleNotFoundError: No module named 't1' 

Я выбежал из идей, что этот вопрос может быть и был бы признателен за новое вдохновение ,

ответ

8

Будет ли это работать? в 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/[email protected]_message=msg%20287921%20created%0Aissue%2029578%20message_count%2C%20messages%20edited%20ok&@template=item»

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

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

+0

это тест, который работал на моем компьютере, при запуске t2.py через idle – stonebig

+0

вы правы, что он не работает через командную строку – stonebig

+0

http://bugs.python.org/[email protected]_message= issue% 2029578% 20title% 20edited% 20ok & @ template = item – stonebig