在python包

时间:2017-11-08 18:26:27

标签: python json python-3.x credentials

我正在开发一个Python包来与API通信。为了不对用户名和密码进行硬编码,我想阅读来自“#conf;”中的JSON文件的凭据。目录。因此,如果没有给出用户名和密码,它会尝试从文件中加载凭据:

def __init__(self, user=None, pswd=None):
        """ Illustrate method-level docstring."""
        if pswd is None:
            try:
                with open('conf/credentials.json') as data_file:
                    data = json.load(data_file)
                    user = data['user']
                    pswd = data['password']
                    print('You will log in with user', user)
            except IOError:
                print("Could not read file: credentials.json. Please Instantiate object with your username and password")

此解决方案在同一目录中执行代码时工作正常,但一旦安装了软件包,系统就找不到该文件:

Could not read file: credentials.json. Please Instantiate object with
your username and password

我该如何克服这个问题?是否可以参考安装路径?我不想加密密码,我只想将凭据放在单独的文件中,并将文件添加到 .gitignore 文件中,以防止共享此信息。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用存储文件名(带有绝对或相对路径)的“ 文件”,并以此为基础构建路径。

您还可以将机密数据存储在其他目录(代码库外部)中,例如〜/。最好将此文件名作为环境变量传递(请参见os.environ),以便用户可以指向正确的文件。