Spaces:
Sleeping
Sleeping
#!/usr/bin/env python3 | |
""" | |
启动脚本 - 设置环境变量以解决 Hugging Face Spaces 中的权限问题 | |
""" | |
import os | |
import tempfile | |
import sys | |
def setup_environment(): | |
"""设置所有必要的环境变量""" | |
# 检测是否在 Hugging Face Spaces 中运行 | |
is_hf_space = bool(os.environ.get('SPACE_ID') or os.environ.get('HF_SPACE_ID')) | |
if is_hf_space: | |
print("检测到 Hugging Face Spaces 环境,设置临时目录...") | |
# 创建临时目录 | |
temp_base = tempfile.mkdtemp() | |
# 设置 matplotlib 配置目录 | |
matplotlib_dir = os.path.join(temp_base, "matplotlib") | |
os.makedirs(matplotlib_dir, exist_ok=True) | |
os.environ["MPLCONFIGDIR"] = matplotlib_dir | |
# 设置 XDG 缓存目录 | |
os.environ["XDG_CACHE_HOME"] = temp_base | |
# 设置 numba 缓存目录 | |
numba_dir = os.path.join(temp_base, "numba_cache") | |
os.makedirs(numba_dir, exist_ok=True) | |
os.environ["NUMBA_CACHE_DIR"] = numba_dir | |
# 设置 Hugging Face 缓存目录 | |
hf_dir = os.path.join(temp_base, "hf_cache") | |
os.makedirs(hf_dir, exist_ok=True) | |
os.environ["HF_HOME"] = hf_dir | |
os.environ["HF_HUB_CACHE"] = os.path.join(hf_dir, "hub") | |
print(f"环境变量已设置:") | |
print(f" MPLCONFIGDIR: {matplotlib_dir}") | |
print(f" XDG_CACHE_HOME: {temp_base}") | |
print(f" NUMBA_CACHE_DIR: {numba_dir}") | |
print(f" HF_HOME: {hf_dir}") | |
print(f" HF_HUB_CACHE: {os.environ['HF_HUB_CACHE']}") | |
else: | |
print("本地环境,使用默认缓存目录") | |
return is_hf_space | |
def check_imports(): | |
"""检查关键导入是否正常工作""" | |
try: | |
print("检查导入...") | |
# 检查 langchain 相关导入 | |
from langchain_community.embeddings import HuggingFaceEmbeddings | |
print("✅ langchain_community.embeddings 导入成功") | |
from langchain_text_splitters import RecursiveCharacterTextSplitter | |
print("✅ langchain_text_splitters 导入成功") | |
# 检查其他关键库 | |
import torch | |
print("✅ PyTorch 导入成功") | |
import transformers | |
print("✅ Transformers 导入成功") | |
import matplotlib | |
print("✅ Matplotlib 导入成功") | |
import numba | |
print("✅ Numba 导入成功") | |
return True | |
except ImportError as e: | |
print(f"❌ 导入失败: {e}") | |
return False | |
if __name__ == "__main__": | |
print("=== 环境设置脚本 ===") | |
# 设置环境变量 | |
is_hf_space = setup_environment() | |
# 检查导入 | |
if check_imports(): | |
print("\n✅ 环境设置完成,所有导入正常") | |
if is_hf_space: | |
print("💡 提示: 在 Hugging Face Spaces 中使用临时目录作为缓存") | |
else: | |
print("💡 提示: 在本地环境中使用默认缓存目录") | |
else: | |
print("\n❌ 环境设置失败,请检查依赖安装") | |
sys.exit(1) |