0

我正在使用 python ClouldStack API 连接到我的云提供商。

 cloudstack = CloudStack.Client()

在 $HOME 我必须使用我的 api 凭据创建以下文件,例如

/root/.cloudstack

如果我从命令行从根目录运行 python 脚本..它可以工作。但是,当使用 runit 运行脚本时,出现以下错误。

Traceback (most recent call last):
  File "/home/ubuntu/workspace/rtbopsConfig/rtb_remote_services/remote_chef_dp_redis_monitor.py", line 27, in <module>
    import chefUtilities as chefu
  File "/home/ubuntu/workspace/rtbopsConfig/classes/chefUtilities.py", line 29, in <module>
    import dpClouldStack as dpu
  File "/home/ubuntu/workspace/rtbopsConfig/classes/dpClouldStack.py", line 1, in <module>
    import CloudStack
  File "/usr/local/lib/python2.7/dist-packages/CloudStack-0.1-py2.7.egg/CloudStack/__init__.py", line 1, in <module>
    from Client import Client
  File "/usr/local/lib/python2.7/dist-packages/CloudStack-0.1-py2.7.egg/CloudStack/Client.py", line 1, in <module>
    from BaseClient import BaseClient
  File "/usr/local/lib/python2.7/dist-packages/CloudStack-0.1-py2.7.egg/CloudStack/BaseClient.py", line 12, in <module>
    config_file = env + '/.cloudstack'
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

这是我的 runit 运行文件的样子。

#!/bin/sh
exec 2>&1
exec /usr/bin/python /home/ubuntu/workspace/test.py >> /tmp/remote_chef_elb_monitor.out 2>&1

那么... runit 在 root 下运行吗?如果是这样,它不会文件/root/.cloudstack 吗?

4

1 回答 1

0

由于您没有显示代码,因此我只能提供帮助,因为我可以告诉您的env变量是None. 要么你从一个在所有情况下都不能正确返回它的函数中得到它,要么是出现了其他问题。

于 2012-07-19T15:00:58.980 回答