目录结构:
|--myPublish
|--funcA
|--funcA.py
|--funcB
|--funcB.py
|--setup.py
|--useMyPublish
要发布的代码:
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'])
执行命令,安装后。site-packages目录下有myPublish文件夹,里面有MyTool.py, funcA.py, funcB.py
在useMyPublish下的test.py代码如下:
import sys
print(sys.path)
import myPublish.MyTool as tool
tool.inter()
问题:
为什么一定要指定路径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