关于自定义包
本帖最后由 歌者文明清理员 于 2023-4-1 15:12 编辑pygame 功能齐全,但是代码有些复杂;功能强大的 cocos2d-python 虽然代码简洁,但是没那么多功能。
所以希望自己封装一个包,兼容 pygame,但是代码很简洁。
在此之前自己做了一个包练练手,结果直接报错。
代码见附件。
图片:
1. 为什么编辑器没有标注出来
https://t4.wodetu.cn/2023/04/01/962410e7bb44816be0e14c36d26c1109.png
2. 为什么手动写上 test 后,ModulenotfoundError
https://t1.wodetu.cn/2023/04/01/0ca2f261465454b5de3e6499ed109af8.png
3. 为什么在 __init__.py 里加上 import test 后报错。
https://t3.wodetu.cn/2023/04/01/f12c4f363083424c2bd21d3fd7b3996d.png 本帖最后由 isdkz 于 2023-4-1 15:20 编辑
把 __init__.py 中的 import test.py 改成 from . import test
把 test.py 中的 from out import print 改成 from .out import print isdkz 发表于 2023-4-1 15:18
把 __init__.py 中的 import test.py 改成 from . import test
PS D:\Projects\dfw> & C:/Users/ /AppData/Local/Programs/Python/Python37/python.exe d:/Projects/dfw/testot.py
Traceback (most recent call last):
File "d:/Projects/dfw/testot.py", line 1, in <module>
import my_pak
File "d:\Projects\dfw\my_pak\__init__.py", line 1, in <module>
from . import test
File "d:\Projects\dfw\my_pak\test.py", line 1, in <module>
from out import print
ModuleNotFoundError: No module named 'out'
out.py 请见附件 歌者文明清理员 发表于 2023-4-1 15:20
out.py 请见附件
我加上去了,你还要把 test.py 中的 from out import print 改成 from .out import print isdkz 发表于 2023-4-1 15:21
我加上去了,你还要把 test.py 中的 from out import print 改成 from .out import print
谢谢
但为什么要这样写? 歌者文明清理员 发表于 2023-4-1 15:22
谢谢
但为什么要这样写?
这是相对导入,相对导入会帮你自动拼接路径,如果不用相对导入的话,
你的代码中的任何导入操作都是在 sys.path 中指定的路径导入的,sys.path 只会自动把当前目录加进去,
所以你要导入的模块不在当前目录中或者不在 sys.path 的默认目录中就得用相对导入,
否则你就得自己加入 sys.path isdkz 发表于 2023-4-1 15:25
这是相对导入,相对导入会帮你自动拼接路径,如果不用相对导入的话,
你的代码中的任何导入操作都是在 ...
懂了
你的意思是,test.py 里的 from out import print 中,out 是在 testot.py 的目录里找的是吧 歌者文明清理员 发表于 2023-4-1 15:30
懂了
你的意思是,test.py 里的 from out import print 中,out 是在 testot.py 的目录里找的是吧
对的,你把 out 改成 .out 就会在 test.py 所在的目录找 out,
不然的话你在哪里导包的就在哪个目录找
页:
[1]