尝试导入软件包时出现python ModuleNotFoundError

时间:2020-06-03 09:42:25

标签: python module package sys.path

我的桌面上有两个文件夹,一个名为“ testpackage”,另一个名为“ testplay”。 “ testpackage”包含一个 init .py和另一个名为“ numberstuff.py”的文件(具有两个方法的类)。 'testplay'包含'play_01.py',这是一个简单的脚本,仅用于检查我是否可以将软件包添加到sys.path中而无需将其实际添加到sys.path中的库中,我认为我可以通过sys.path.append来完成此操作Windows上python3上的(path \ to \ file)。

测试播放“ 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))

控制台返回:

   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

我可以看到test.package在sys.path中,我只是无法弄清楚为什么它被视为模块以及为什么不能导入它>

预期输出为'9'。

1 个答案:

答案 0 :(得分:1)

我能想象的唯一一件事是您将文件夹称为“ testpackage”,但是您要导入的文件具有另一个名称。但是,由于尝试导入名为“ testpackage”的文件,因此会出现异常。

我已经尝试过解决您的问题,但是无法。

我的文件夹/文件结构如下:

/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”。

祝你好运!