Windows 环境下解决fastdfs_client安装报错的问题

最近做的Django项目中需要存储图片文件,为了解决图片存储的问题,所以引入了FastDFS,主要是以下两个问题

  • 存储相同名称的不同文件
  • 存储不同名称的相同文件

简单说一下FastDFS

FastDFS 是用 c 语言编写的一款开源的分布式文件系统。

FastDFS 为互联网量身定制, 充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS 很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

FastDFS 架构包括 Tracker server 和 Storage server。客户端(client)请求 Tracker server 进行文 件上传、下载,通过 Tracker server 调度最终由 Storage server 完成文件上传和下载。

开发环境

1.docker容器中运行单节点的跟踪器(tracker)和存储节点(storage)
2.在windows10系统,python虚拟环境下安装 fastdfs_client 进行开发调试(python解释器版本:3.6.5)
3.使用的IDE:pycharm

安装fastdfs_client报错

pip install fdfs_client
报错信息

解决办法

1.下载fdfs_client包
(下载地址:http://down.51cto.com/data/2448725)
解压之后直接将fdfs_client文件夹copy到python解释器的 /lib 目录下
解压得到的文件夹:
fdfs
copy到python解释器的 /lib 目录下
fdfs_client
2. 修改fdfs_client/storage_client.py文件,将第12行删除或注释(否则,使用时会报错ImportError: No module named sendfile)
# from fdfs_client.sendfile import *
3.安装 mutagen 和 requests
pip install mutagen
pip isntall requests
4.修改fastdfs配置文件:client_config

# connect timeout in seconds
# default value is 30s
connect_timeout=30

# network timeout in seconds
# default value is 30s
network_timeout=60

# the base path to store log files
base_path=../../logs    # 日志存放路径

# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=192.168.11.200:22122     # tracker服务器

#standard log level as syslog, case insensitive, value list:
### emerg for emergency
### alert
### crit for critical
### error
### warn for warning
### notice
### info
### debug
log_level=info

# if use connection pool
# default value is false
# since V4.05
use_connection_pool = false

# connections whose the idle time exceeds this time will be closed
# unit: second
# default value is 3600
# since V4.05
connection_pool_max_idle_time = 3600

# if load FastDFS parameters from tracker server
# since V4.05
# default value is false
load_fdfs_parameters_from_tracker=false

# if use storage ID instead of IP address
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# default value is false
# since V4.05
use_storage_id = false

# specify storage ids filename, can use relative or absolute path
# same as tracker.conf
# valid only when load_fdfs_parameters_from_tracker is false
# since V4.05
storage_ids_filename = storage_ids.conf


#HTTP settings
http.tracker_server_port=80

#use "#include" directive to include HTTP other settiongs
##include http.conf

5.在 python 虚拟环境下进入 shell 终端进行上传测试

导入模块:
from fdfs_client.client import Fdfs_client

导入配置文件
注意:windows环境下绝对路径会发生转义,需要加上 "r" 说明是原生字符串
client = Fdfs_client(r'配置文件绝对路径')

上传图片
注意:windows环境下绝对路径会发生转义,需要加上 "r" 说明是原生字符串
client.upload_by_filename(r'图片文件绝对路径')

上传测试成功!
上传测试

总结

1.修改lib/fdfs_client/storage_client.py文件,注释第12行;
2.windows环境下路径分隔符是 ‘\’ ,而linux使用 ‘/’,所以需要使用 ‘r’ 来声明是原生字符串;
3.如果刚开始使用 pip install fdfs_client,报错,不要盲目安装VC++ 14.0,可以先去 控制面板==>>程序==>>程序和功能 查看是否已经安装过。

猜你喜欢

转载自blog.csdn.net/m0_37714245/article/details/81808332