python引入自己发布的模块时,提示发布模块的模块没找到

  1. 目录结构:
    |--myPublish
    |--funcA
    |--funcA.py
    |--funcB
    |--funcB.py
    |--setup.py
    |--useMyPublish

  2. 要发布的代码:
    MyTool.py
    from funcA.funcA import test1
    from funcB.funcB import test2
    class Tool :
    def test1(self):
    test1()
    test2()
    print('test1')

def main():
tool = Tool()
tool.test1()

def inter():
tool = Tool()
tool.test1()

if name == '__main__':
main()

funA.py、funcB.py(在)
def test1():
print('A - test1')
def test2():
print('A - test2')

setup.py
import sys
sys.path.append("../../../")
from distutils.core import setup

setup(name='myPublish', version='1.0', description='发布模块', author='kukii',
py_modules=['myPublish.MyTool','myPublish.MyUtil','myPublish.funcA.funcA'
, 'myPublish.funcB.funcB'])

  1. 执行命令,安装后。site-packages目录下有myPublish文件夹,里面有MyTool.py, funcA.py, funcB.py

  2. 在useMyPublish下的test.py代码如下:
    import sys

    sys.path.append('E:/Eclipse/jee-neon workspace/pydemo/demo21/dist/myPublish-1.0/myPublish')

    sys.path.append('E:/python/Python36/Lib/site-packages/myPublish')

    print(sys.path)
    import myPublish.MyTool as tool
    tool.inter()

  3. 问题:
    为什么一定要指定路径sys.path.append('E:/python/Python36/Lib/site-packages/myPublish')或者sys.path.append('E:/Eclipse/jee-neon workspace/pydemo/demo21/dist/myPublish-1.0/myPublish'), 否则会报错:ModuleNotFoundError: No module named 'funcA'

您好!
您遇到的这个问题是因为Python没有找到您引入的库。指定路径能导入是因为设置‘E:/python/Python36/Lib/site-packages/myPublish’为工作目录。
解决办法:
将模块放到程序引入的安装目录。

望采纳!

在 文件夹中 新建 init.py文件 内容为空 这个就是告诉python编译器 改文件夹是python可导入的包 再正常导入就ok