ModuleNotFoundError:Python 3.6在Python 3.5中找不到模块

Sam*_*ufi 7 import python-3.6

我想将我的python版本从3.5升级到3.6.由于我使用的是WinPython,我已经下载并安装了最新版本,就像我之前使用的是3.5版一样.

但是,如果我使用版本3.6,ModuleNotFoundError每当我导入自创模块时,我都会得到一个.一个最小的例子:我创建了一个t1.py只包含一个pass语句的文件和一个t2.py包含以下代码的文件:

import t1
print("done")
Run Code Online (Sandbox Code Playgroud)

两个文件都在同一个文件夹中D:\MyProject\src.现在当我用python 3.5运行文件时,一切正常:

'C:\Program Files\WinPython-64bit-3.5.1.2\python-3.5.1.amd64\python.exe' D:\MyProject\src\t2.py
done
Run Code Online (Sandbox Code Playgroud)

但是,使用python 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'
Run Code Online (Sandbox Code Playgroud)

我没有想到问题可能是什么,并会欣赏新的灵感.

sto*_*big 8

这会有用吗?在t2.py

import os
__path__=[os.path.dirname(os.path.abspath(__file__))]
from . import t1
print("t2 done")
Run Code Online (Sandbox Code Playgroud)

Python-3.6改变了它的工作方式,使用python.exe旁边的"python._pth"文件(而不是以前版本中的"pyvenv.cfg")

如果您不想修改源代码,则必须在Python._pth文件中添加"D:\ MyProject\src"行,或者从python._pth位置添加相对路径.在我的例子中,它适用于:

python36.zip
DLLs
Lib
.
..\test
import site
Run Code Online (Sandbox Code Playgroud)

" 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"旁边的"python._pth"文件

Python"Windows"维护者刚刚写道,使用Python-3.6.0时,更简单的解决方案也应该没问题.