Traceback (most recent call last):
File "D:/pyprojects/qiniu/demo.py", line 26, in
ret, info = put_file(token, key, localfile)
File "D:\Python\python34\lib\site-packages\qiniu\services\storage\uploader.py", line 64, in put_file
ret, info = _form_put(up_token, key, input_stream, params, mime_type, crc, progress_handler, file_name)
File "D:\Python\python34\lib\site-packages\qiniu\services\storage\uploader.py", line 80, in _form_put
url = config.get_default('default_zone').get_up_host_by_token(up_token) + '/'
File "D:\Python\python34\lib\site-packages\qiniu\zone.py", line 30, in get_up_host_by_token
up_hosts = self.get_up_host(ak, bucket)
File "D:\Python\python34\lib\site-packages\qiniu\zone.py", line 49, in get_up_host
bucket_hosts = self.get_bucket_hosts(ak, bucket)
File "D:\Python\python34\lib\site-packages\qiniu\zone.py", line 71, in get_bucket_hosts
bucket_hosts = self.get_bucket_hosts_to_cache(key)
File "D:\Python\python34\lib\site-packages\qiniu\zone.py", line 91, in get_bucket_hosts_to_cache
self.host_cache_from_file()
File "D:\Python\python34\lib\site-packages\qiniu\zone.py", line 107, in host_cache_from_file
path = self.host_cache_file_path()
File "D:\Python\python34\lib\site-packages\qiniu\zone.py", line 124, in host_cache_file_path
return home + "/.qiniu_pythonsdk_hostscache.json"
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
我用官方在github上得代码,我看源码是HOME环境变量没设置,这个怎么破?
我用的py3.4
在自己环境里面也试了一下:
Windows10 64Bits
Python3.5.2
也会报这个问题,再手动添加一个环境变量HOME之后,此问题得到解决:
另外在Linux环境下也分别试了:
Python2.7.8和Python3.5.2
均未出现此问题。
Root Cause还是环境变量的问题:
def host_cache_file_path(self): home = os.getenv("HOME") # 如果环境变量不存在的话,home是None,导致报错 return home + "/.qiniu_pythonsdk_hostscache.json"
在我的环境里,默认情况下:
Linux
(py3env) [root@iZ94dn8i2nsZ py]# echo $HOME /root
Windows环境下没有设置HOME环境变量
官方的代码没有设置HOME变量是留给你自己设置自己对应的,其次,你可以查看官方接入文档说明。一般也就需要开发者的secretKey-通过鉴权。最后还是不能你可以去隔壁论坛问他们API的开发人员,一般都会帮助你解决的。 ---------- 七牛开发者文档-Python SDK使用指南:http://developer.qiniu.com/code/v7/sdk/python.html 七牛开发者论坛:https://segmentfault.com/qiniu