2017-02-16 71 views
6

Chciałem uaktualnić moją wersję python z 3.5 na 3.6. Ponieważ używam WinPython, pobrałem i zainstalowałem najnowszą wersję, tak jak to zrobiłem wcześniej w wersji 3.5.ModuleNotFoundError: Python 3.6 nie znajduje modułów podczas gdy Python 3.5 ma

Jednakże, jeśli korzystam z wersji 3.6, otrzymuję ModuleNotFoundError za każdym razem, gdy importuję własny moduł. Minimalny przykład: Stworzyłem plik t1.py że zawiera tylko pass oświadczenie oraz akta t2.py zawierający następujący kod:

import t1 
print("done") 

oba pliki są w tym samym folderze D:\MyProject\src. Teraz, kiedy uruchomić plik z Python 3.5, wszystko działa bez zarzutu:

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

Jednak z Pythona 3.6 dostaję

'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' 

zabrakło mi pomysłów co problem może być i doceni nowe inspiracje .

Odpowiedz

8

Czy to działa? w t2.py

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

Pythona 3.6 zmienia swój sposób pracy, z „python._pth” pliku obok python.exe (zamiast „pyvenv.cfg” w poprzednich wersjach)

Jeśli nie chcesz modyfikować swojego źródła, musisz dodać linię "D: \ MyProject \ src" w pliku Python._pth lub względną ścieżkę do niej z lokalizacji python._pth. w moim przykładzie, współpracuje z:

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

inne, prostsze rozwiązanie, jeśli nie masz systemu zainstalowanego Pythona: zmień nazwę pliku „python._pth”, obok „python.exe ", jak" pythonzz._pth "

Opiekun" Windowsa "Pythona właśnie napisał, że prostsze rozwiązanie powinno być również w porządku z Pythonem 3.6.0.

+0

jest to test, który pracował na moim komputerze, z t2.py rozpoczętego przez bezczynności – stonebig

+0

masz rację, że doens't pracę za pośrednictwem linii poleceń – stonebig

+0

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