被python的import逼疯了
这是我的目录
clock模块引入notify下的2个子类
from notify.sound_notify import SoundNotifier
from notify.toast_nofity import ToastNotifier
notify的子类【带前缀的notify】引入同级的父类
有两种引入方式
from notify import Notifier
from .notify import Notifier
写法1,在vscode运行notifier自己时,可以正常运行
if __name__ == '__main__':
notifier=SoundNotifier()
notifier.notify()
但是运行clock时,提示导入失败
NameError: name 'Notifier' is not defined
而写法2,运行clock时正常,而运行notifier自身,提示不能通过相对路径导入。
☹️☹️☹️☹️☹️☹️☹️☹️☹️
百度说,可以使用sys.path解决
import os,sys
sys.path.append(os.path.dirname(__file__))
from notify import Notifier
但是,运行clock依然提示导入失败
☹️☹️☹️☹️☹️☹️☹️☹️☹️
于是乎,我想了一个very ugly的写法
if __name__ == '__main__':
from notify import Notifier
else:
from .notify import Notifier
😭😭😭😭😭😭😭
请明白的大神讲解一下,正确的导入到底该怎么做?
改个文件夹名不行吗? 带色的小马甲 发表于 2021-11-24 16:18
改个文件夹名不行吗?
哈哈哈。系统被整晕了 改个文件夹名不行吗? 是不是需要一个init.py 在notify文件夹下添加__init__.py文件内容为
from .notify import Notifier
from .sound_notify import SoundNotifier
当然这个init你是不能运行的
文件存放与全部内容如下图
带色的小马甲 发表于 2021-11-24 16:18
改个文件夹名不行吗?
{:1_907:}竟然是这原因,汗🥲🥲🥲 你需要了解一下python的包管理。
虽然我也觉得python的包管理不算好用。 起名字不要起跟模块或者关键字一样的名字,会冲突的呀 文件夹改一下咯{:1_924:}