前言
Langchain-Chatchat 在windows上运行python init_database.py --recreate-vs 这一段的时候报错 ModuleNotFoundError: No module named ‘pwd‘。
一、原因
根据报错信息,很容易看到问题出在
lib\site-packages\langchain_community\document_loaders\pebblo.py 里,因为pwd是linux。看一下如下的pwd的源码可以看到它在windows下是不能运行的。
import sys
from _typeshed import structseq
from typing import Any
from typing_extensions import Final, final
if sys.platform != "win32":
@final
class struct_passwd(structseq[Any], tuple[str, str, int, int, str, str, str]):
if sys.version_info >= (3, 10):
__match_args__: Final = ("pw_name", "pw_passwd", "pw_uid", "pw_gid", "pw_gecos", "pw_dir", "pw_shell")
@property
def pw_name(self) -> str: ...
@property
def pw_passwd(self) -> str: ...
@property
def pw_uid(self) -> int: ...
@property
def pw_gid(self) -> int: ...
@property
def pw_gecos(self) -> str: ...
@property
def pw_dir(self) -> str: ...
@property
def pw_shell(self) -> str: ...
def getpwall() -> list[struct_passwd]: ...
def getpwuid(__uid: int) -> struct_passwd: ...
def getpwnam(__name: str) -> struct_passwd: ...
二、解决方案
1.找到pebblo.py
修改
2.注释import pwd
首先注释掉第五行 import pwd
3.修改file_owner_name
搜索 file_owner_name = pwd.getpwuid(file_owner_uid).pw_name
找到之后,将其直接修改为file_owner_name = “unknown”
毕竟在windows上我们只是调试、开发或学习用,暂时把它改为unknown是不影响后续的使用的
总结
在window上使用有很多的小问题需要解决。当我们正式生产运行的时候使用ubuntu就能完美解决了。