python 尝试导入包时出现 ModuleNotFoundError
python ModuleNotFoundError when trying to import a package
我的桌面上有两个文件夹,一个叫 'testpackage',另一个叫 'testplay'。 'testpackage' 包含一个 init.py 和另一个名为 'numberstuff.py' 的文件(一个 class 有两种方法)。 'testplay' 包含 'play_01.py',一个用于检查的简单脚本 我可以将包添加到 sys.path 而无需将其物理添加到 sys.path 中的库中,我想我可以做到这一点通过 sys.path.append(path\to\file) 在 python3 在 windows.
试玩'play_01.py'代码:
import sys
for i in sys.path:
print(i,'\n')
sys.path.append('C:\Users\priper\Desktop\testpackage')
from testpackage import numberstuff
a = numberstuff.maffs()
print(a.sqrtx(3))
控制台 return:
C:\Users\priper\AppData\Local\Programs\Python\Python37\python37.zip
C:\Users\priper\AppData\Local\Programs\Python\Python37\DLLs
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib
C:\Users\priper\AppData\Local\Programs\Python\Python37
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib\site-packages
C:\Users\priper\AppData\Roaming\Python\Python37\site-packages
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib\site-packages\win32
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib\site-packages\win32\lib
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib\site-packages\Pythonwin
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\mypackage
sdnplay.py
sdnplay.py
sdnplay.py
sdnplay
sdnplay
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\testplay
C:\Users\priper\Desktop\testpackage
C:\Users\priper\Desktop\testpackage
错误:
ModuleNotFoundError: No module named 'testpackage'
File"C\Users\priper\Desktop\testplay\play_01.py", line 6, in <module> from testpackage import numberstuff
我可以看到 sys.path 中有测试包,我只是不明白为什么它被视为一个模块以及为什么我不能导入它>
预期输出为“9”。
我唯一能想到的是,您调用了文件夹 "testpackage",但您尝试导入的文件有另一个名称。但是由于您正在尝试导入名为 "testpackage" 的文件,因此出现了异常。
我已尝试重建您的问题,但未能成功。
我的 folder/file 结构如下所示:
/full/path/to/the/parent/folder:
- main.py
- theFolder/
- IAMATEST.py
main.py
import sys
sys.path.append('/full/path/to/the/parent/folder/theFolder')
from IAMATEST import IAMATESTClass
IAMATESTClass.calla()
IAMTEST.py
class IAMATESTClass:
@staticmethod
def calla():
print("GOT CALLED")
并且在执行 main.py 时我得到输出 "GOT CALLED".
祝你好运!
我的桌面上有两个文件夹,一个叫 'testpackage',另一个叫 'testplay'。 'testpackage' 包含一个 init.py 和另一个名为 'numberstuff.py' 的文件(一个 class 有两种方法)。 'testplay' 包含 'play_01.py',一个用于检查的简单脚本 我可以将包添加到 sys.path 而无需将其物理添加到 sys.path 中的库中,我想我可以做到这一点通过 sys.path.append(path\to\file) 在 python3 在 windows.
试玩'play_01.py'代码:
import sys
for i in sys.path:
print(i,'\n')
sys.path.append('C:\Users\priper\Desktop\testpackage')
from testpackage import numberstuff
a = numberstuff.maffs()
print(a.sqrtx(3))
控制台 return:
C:\Users\priper\AppData\Local\Programs\Python\Python37\python37.zip
C:\Users\priper\AppData\Local\Programs\Python\Python37\DLLs
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib
C:\Users\priper\AppData\Local\Programs\Python\Python37
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib\site-packages
C:\Users\priper\AppData\Roaming\Python\Python37\site-packages
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib\site-packages\win32
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib\site-packages\win32\lib
C:\Users\priper\AppData\Local\Programs\Python\Python37\Lib\site-packages\Pythonwin
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\mypackage
sdnplay.py
sdnplay.py
sdnplay.py
sdnplay
sdnplay
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\sdnplay
C:\Users\priper\Desktop\testplay
C:\Users\priper\Desktop\testpackage
C:\Users\priper\Desktop\testpackage
错误:
ModuleNotFoundError: No module named 'testpackage'
File"C\Users\priper\Desktop\testplay\play_01.py", line 6, in <module> from testpackage import numberstuff
我可以看到 sys.path 中有测试包,我只是不明白为什么它被视为一个模块以及为什么我不能导入它>
预期输出为“9”。
我唯一能想到的是,您调用了文件夹 "testpackage",但您尝试导入的文件有另一个名称。但是由于您正在尝试导入名为 "testpackage" 的文件,因此出现了异常。
我已尝试重建您的问题,但未能成功。
我的 folder/file 结构如下所示:
/full/path/to/the/parent/folder:
- main.py
- theFolder/
- IAMATEST.py
main.py
import sys
sys.path.append('/full/path/to/the/parent/folder/theFolder')
from IAMATEST import IAMATESTClass
IAMATESTClass.calla()
IAMTEST.py
class IAMATESTClass:
@staticmethod
def calla():
print("GOT CALLED")
并且在执行 main.py 时我得到输出 "GOT CALLED".
祝你好运!