File size: 3,079 Bytes
80c0e03
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# 项目修复说明

## 修复的问题

### 1. 导入路径问题
- **问题**: 使用了已弃用的 `langchain_huggingface``langchain.embeddings` 导入
- **修复**: 统一使用 `langchain_community.embeddings` 导入 `HuggingFaceEmbeddings`
- **影响文件**:
  - `src/demo/views.py`
  - `src/demo/asg_retriever.py`
  - `src/demo/main.py`
  - `src/demo/survey_generator_api.py`
  - `src/demo/survey_generation_pipeline/main.py`
  - `src/demo/survey_generation_pipeline/asg_retriever.py`
  - `test_cache_fix.py`

### 2. 文本分割器导入问题
- **问题**: 使用了已弃用的 `langchain.text_splitter` 导入
- **修复**: 使用新的 `langchain_text_splitters`- **影响文件**:
  - `src/demo/asg_retriever.py`
  - `src/demo/survey_generation_pipeline/asg_retriever.py`

### 3. 环境变量和权限问题
- **问题**: 在 Hugging Face Spaces 中遇到 matplotlib、fontconfig、numba 缓存权限错误
- **修复**: 动态设置环境变量,在 HF Spaces 中使用临时目录
- **影响文件**:
  - `src/demo/views.py` (主要修复)
  - `src/demo/path_utils.py` (移除 TRANSFORMERS_CACHE)

### 4. Transformers 缓存警告
- **问题**: `TRANSFORMERS_CACHE` 环境变量已弃用
- **修复**: 只设置 `HF_HOME``HF_HUB_CACHE`
- **影响文件**:
  - `src/demo/path_utils.py`

## 新增文件

### 1. `startup.py`
- 环境设置脚本,用于在启动时设置所有必要的环境变量
- 检查关键导入是否正常工作
- 支持本地和 Hugging Face Spaces 环境

### 2. `requirements.txt`
- 完整的依赖列表,包含所有必要的包和版本
- 确保兼容性和稳定性

### 3. `README_FIXES.md`
- 本文档,记录所有修复内容

## 环境变量设置

### Hugging Face Spaces 环境
当检测到 `SPACE_ID` 或 `HF_SPACE_ID` 环境变量时,自动设置:

```python
# 临时目录
temp_base = tempfile.mkdtemp()

# matplotlib 配置
os.environ["MPLCONFIGDIR"] = os.path.join(temp_base, "matplotlib")

# XDG 缓存
os.environ["XDG_CACHE_HOME"] = temp_base

# numba 缓存
os.environ["NUMBA_CACHE_DIR"] = os.path.join(temp_base, "numba_cache")

# Hugging Face 缓存
os.environ["HF_HOME"] = os.path.join(temp_base, "hf_cache")
os.environ["HF_HUB_CACHE"] = os.path.join(temp_base, "hf_cache/hub")
```

### 本地环境
使用默认缓存目录,不进行特殊设置。

## 使用方法

### 1. 安装依赖
```bash
pip install -r requirements.txt
```

### 2. 运行环境检查
```bash
python startup.py
```

### 3. 启动应用
```bash
python manage.py runserver
```

## 注意事项

1. **缓存目录**: 在 Hugging Face Spaces 中,所有缓存都存储在临时目录中,重启后会清除
2. **权限**: 修复后的代码会自动处理权限问题,无需手动设置
3. **兼容性**: 代码同时支持本地开发和 Hugging Face Spaces 部署
4. **依赖**: 确保使用 `requirements.txt` 中的版本,避免兼容性问题

## 验证修复

运行 `startup.py` 脚本,应该看到:
- ✅ 所有导入成功
- ✅ 环境变量正确设置
- ✅ 无权限错误
- ✅ 无弃用警告