FreeBSD下执行nb run报错value is not a valid IPv4 or IPv6 address (type=value_error.ipvanyaddress)
Alex6357 opened this issue · 10 comments
root@localhost:/usr/local/hikaribot # nb run
04-17 21:45:56 [SUCCESS] nonebot | NoneBot is initializing...
Traceback (most recent call last):
File "/usr/local/hikaribot/bot.py", line 10, in <module>
nonebot.init()
File "/usr/local/lib/python3.9/site-packages/nonebot/__init__.py", line 275, in init
config = Config(
File "/usr/local/lib/python3.9/site-packages/pydantic/env_settings.py", line 39, in __init__
super().__init__(
File "/usr/local/lib/python3.9/site-packages/pydantic/main.py", line 341, in __init__
raise validation_error
pydantic.error_wrappers.ValidationError: 1 validation error for Config
host
value is not a valid IPv4 or IPv6 address (type=value_error.ipvanyaddress)
这是pydantic的问题还是FreeBSD环境的问题?
麻烦发一下你的 .env 文件内容
.env:
ENVIRONMENT=prod
HOST=0.0.0.0
PORT=8080
LOG_LEVEL=INFO
FASTAPI_RELOAD=false
COMMAND_START=["/", ""] # 配置命令起始字符
COMMAND_SEP=["."] # 配置命令分割字符
API_TOKEN = 123456:qwertyuiopasdfghjl #请加群联系雨季获取api_key和token Q群:967546463,直接用邮件中的token替换前面这串字符串就行了,没有引号
SUPERUSERS=["1119809439"] #替换为你自己的QQ号,确认与BOT是好友
USE_PLUGIN_GO_CQHTTP = true #使用内嵌go-cqhttp插件,如果一直连不上请将此项值改为false,并按教程下载go-cqhttp
private = false #开启私聊
group = true #开启群聊
channel = false #开启频道
all_channel = false #是否全频道生效,无论此项配置如何,channel_list中的频道一定会开启
channel_list = [] #频道列表白名单,数组形式,可在控制台中获取相应的channel_id
ban_group_list = [967546463] #群列表黑名单,默认屏蔽了开发者交流群
pupu = true #是否开启噗噗
check_cache = true #是否开启缓存上报,可降低高峰期延迟,如果错误日志中频繁报错上报url:XXXXXXXX,请关闭此项或配置代理
proxy_on = false #是否启用代理
proxy = http://localhost:7890 #代理地址,如果上面选项开启,这边替换为你本地的
ocr_on = true #是否开启ocr(识图指令)
ocr_offline = false #是否只使用hash验证,即设置为true后只能识别服务器已记录的图片,如果群较多(>300)导致响应延迟较高可以开启
ocr_url = http://mc.youthnp.cn:23338/OCR/ #默认ocr地址,一般不用动
.env.prod:
HOST=0.0.0.0
PORT=8080
LOG_LEVEL=SUCCESS
FASTAPI_RELOAD=false
COMMAND_START=["/", ""] # 配置命令起始字符
COMMAND_SEP=["."] # 配置命令分割字符
API_TOKEN = ****** #请加群发送.token help获取api_key和token Q群:967546463,直接用邮件中的token替换前面这串字符串就行了,没有引号
SUPERUSERS=["******"] #替换为你自己的QQ号,确认与BOT是好友
USE_PLUGIN_GO_CQHTTP = true #使用内嵌go-cqhttp插件,如果一直连不上请将此项值改为false,并按教程下载go-cqhttp
GOCQ_WEBUI_USERNAME=admin #如果上一项设置为true,请将此处的账号修改为自定义,不配置账号和密码请删除这两项
GOCQ_WEBUI_PASSWORD=admin #如果上一项设置为true,请将此处的密码修改为自定义,不配置账号和密码请删除这两项
private = true #开启私聊
group = true #开启群聊
channel = false #开启频道
all_channel = false #是否全频道生效,无论此项配置如何,channel_list中的频道一定会开启
channel_list = [] #频道列表白名单,数组形式,可在控制台中获取相应的channel_id
ban_group_list = [967546463] #群列表黑名单,默认屏蔽了开发者交流群
pupu = true #是否开启噗噗
check_cache = true #是否开启缓存上报,可降低高峰期延迟,如果错误日志中频繁报错上报url:XXXXXXXX,请关闭此项或配置代理
proxy_on = false #是否启用代理
proxy = http://localhost:7890 #代理地址,如果上面选项开启,这边替换为你本地的
ocr_on = false #是否开启ocr(识图指令)
ocr_offline = false #是否只使用hash验证,即设置为true后只能识别服务器已记录的图片,如果群较多(>300)导致响应延迟较高可以开启
ocr_url = http://mc.youthnp.cn:23338/OCR/ #默认ocr地址,一般不用动
这是HikariBot的配置文件,相同的配置在Windows和Linux下都可以正常运行,但是按理说不应该出现兼容问题。另外试过把.env.prod里的HOST改成127.0.0.1,也不行
看上去host并没有什么问题,挺怪的
可以尝试一下去修改一下 /usr/local/lib/python3.9/site-packages/nonebot/__init__.py
,加个 print 看看 host 输出什么
可以尝试一下去修改一下
/usr/local/lib/python3.9/site-packages/nonebot/__init__.py
,加个 print 看看 host 输出什么
可以具体指导一下吗?因为我没有看明白nonebot/__init__.py是在哪里调用的pydantic
你是不是有个环境变量叫HOST覆盖了配置,然后这个环境变量值还不对
你是不是有个环境变量叫HOST覆盖了配置,然后这个环境变量值还不对
真的是!FreeBSD中有环境变量HOST,类似于Windows的计算机名。
但是这个变量在FreeBSD中非常重要,不能删除,可以让nonebot临时覆盖这个变量吗?如果不行的话我就写一个脚本临时覆盖一下
另外,刚刚第一次执行提示需要pip install nonebot2[fastapi]
,直接在FreeBSD上执行会pip: No match
,但是Windows就可以,很奇怪……
nb driver install fastapi
可以正常执行
可能是不同的环境的问题?(FreeBSD使用csh)
env HOST=0.0.0.0 nb run
找不到pip是环境变量的问题或者就没装pip,你用nb装就行
我认为是FreeBSD的csh对中括号解释有问题,另外,csh要使用setenv而不是env,不管怎么样,非常感谢您的帮助!