Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过文件路径运行python时出现KeyError,直接在目录中运行时没有问题_Python_Ubuntu - Fatal编程技术网

通过文件路径运行python时出现KeyError,直接在目录中运行时没有问题

通过文件路径运行python时出现KeyError,直接在目录中运行时没有问题,python,ubuntu,Python,Ubuntu,我正在AWS中使用Ubuntu18 EC2实例。我已经安装了Anaconda软件包 当我直接进入相应的目录并运行python code.py时,它运行良好。但是,当我尝试使用文件路径运行脚本时,它不会运行 实际代码: 有效 $python AverageAmountofSessions.py 不工作: $python mycompany/AverageSessions/AverageAmountofSessions.py 错误: 回溯(最近一次呼叫最后一次): 文件“mycompany/Aver

我正在AWS中使用Ubuntu18 EC2实例。我已经安装了Anaconda软件包

当我直接进入相应的目录并运行
python code.py
时,它运行良好。但是,当我尝试使用文件路径运行脚本时,它不会运行

实际代码: 有效
$python AverageAmountofSessions.py

不工作:
$python mycompany/AverageSessions/AverageAmountofSessions.py

错误:

回溯(最近一次呼叫最后一次):
文件“mycompany/AverageSessions/AverageAmountofSessions.py”,第126行,在
lambda_处理器('事件','内容')
lambda_处理程序中的第28行文件“mycompany/AverageSessions/AverageAmountofSessions.py”
db_host=db_config['mysql']['host']
文件“/home/ubuntu/anaconda3/lib/python3.7/configparser.py”,第958行,在getitem中
升起钥匙错误(钥匙)
KeyError:'mysql'
添加说明:

  • 调用两个.ini文件以获取登录gmail和数据仓库的凭据
  • 库:SQLalchemy、matplotlib、pandas、smtplib、configparser

您的ini文件与python文件位于同一目录中。看起来它肯定找不到文件了。Id首先检查db_config dict的设置方式。如果这是问题所在,解决方法是将PYTHONPATH变量设置为源代码的根文件夹,看起来它没有找到ini文件中应该包含的密钥mysql。 也许在scipt中找到ini文件的路径不是好的路径

我的意思是,如果您像这样打开ini文件:

config = configparser.ConfigParser()
config.read('example.ini')
那么example.ini不是相对于python scipr所在的位置,而是来自$PWD,这意味着运行它时您在shell中的位置

如果您这样做,并且example.ini与您的ini文件位于同一目录中

import os
config = configparser.ConfigParser()
conffile = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'example.ini')
config.read(conffile)

只需看看您的项目是如何配置的,它从执行点开始初始化mysl路径所采用的路径,这无疑非常有帮助。我把头从桌子上摔下来后,注意到我需要在conffile变量的前面加上“os”。一旦我得到它的工作,我会回来标记这是一个认证的答案与任何补充点,我可以贡献。非常感谢。