七牛云存储上传失败,python代码

Traceback (most recent call last):
  File "D:/pyprojects/qiniu/demo.py", line 26, in <module>
    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

阅读 4.4k
2 个回答
官方的代码没有设置HOME变量是留给你自己设置自己对应的,其次,你可以查看官方接入文档说明。一般也就需要开发者的secretKey-通过鉴权。最后还是不能你可以去隔壁论坛问他们API的开发人员,一般都会帮助你解决的。

----------

七牛开发者文档-Python SDK使用指南:http://developer.qiniu.com/code/v7/sdk/python.html
七牛开发者论坛:https://segmentfault.com/qiniu

在自己环境里面也试了一下:
Windows10 64Bits
Python3.5.2
也会报这个问题,再手动添加一个环境变量HOME之后,此问题得到解决:

clipboard.png

另外在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环境变量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题