Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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
使用Networkite调用Python脚本并发送电子邮件_Python_R_Rstudio_Smtplib_Reticulate - Fatal编程技术网

使用Networkite调用Python脚本并发送电子邮件

使用Networkite调用Python脚本并发送电子邮件,python,r,rstudio,smtplib,reticulate,Python,R,Rstudio,Smtplib,Reticulate,我使用Windows任务调度器一天运行几次R脚本。脚本将转换一些新数据并将其添加到现有数据文件中 我想使用networkite调用一个Python脚本,该脚本将向我发送一封电子邮件,列出添加了多少行数据,以及是否发生了任何错误。当我从RStudio中逐行运行它时,它工作正常。问题是,当脚本按计划运行时,它不起作用。我得到以下错误: Error in py_run_file_impl(file, local, convert) : Unable to open file 'setup_smt

我使用Windows任务调度器一天运行几次R脚本。脚本将转换一些新数据并将其添加到现有数据文件中

我想使用
networkite
调用一个Python脚本,该脚本将向我发送一封电子邮件,列出添加了多少行数据,以及是否发生了任何错误。当我从RStudio中逐行运行它时,它工作正常。问题是,当脚本按计划运行时,它不起作用。我得到以下错误:

Error in py_run_file_impl(file, local, convert) : 
  Unable to open file 'setup_smtp.py' (does it exist?)
Error in py_get_attr_impl(x, name, silent) : 
  AttributeError: module '__main__' has no attribute 'message'
Calls: paste0 ... py_get_attr_or_item -> py_get_attr -> py_get_attr_impl
Execution halted
这个github答案)听起来像是
networkite
只能在RStudio中使用-至少对于我正在尝试的事情。有人有什么建议吗

示例R脚本:

library(tidyverse)
library(reticulate)
library(lubridate)

n_rows <- 10
time_raw <- now()

result <- paste0("\nAdded ", n_rows, 
                 " rows to data file at ", time_raw, ".")

try(source_python("setup_smtp.py"))

message_final <- paste0(py$message, result)

try(smtpObj$sendmail(my_email, my_email, message_final))
try(smtpObj$quit())
库(tidyverse)
图书馆(网状)
图书馆(lubridate)
n_rows这个执行问题

当我从RStudio中逐行运行它时,它工作正常。问题是,当脚本按计划运行时,它不起作用

原因有多种:

  • 您有多个Python版本,其中
    smtplib
    安装在一个版本(例如,Python 2.7或Python 3.6)上,而不是另一个版本。检查命令行、
    Rscript-e“print(Sys.which(“Python”)”)”
    和RStudio、
    Sys.which(“Python”)
    正在使用哪种Python。显式定义要使用Networkite的
    运行的Python.exe使用\u Python(“/path/to/Python”)


  • 您有多个R版本,其中Rscript使用的版本与RStudio不同。检查两个:
    Rscript-e“print(R.home())”
    中的
    R.home()
    变量,并在RStudio中调用
    R.home()
    。在适当的R版本bin文件夹中显式调用所需的Rscript:
    /path/to/R#.#/bin/Rscript”/path/to/code.R“


  • 在同一个R版本上安装了多个
    networkite
    包,它们位于不同的库位置,每个包调用不同的Python版本。检查矩阵:
    installed.package()
    ,定位
    网状行。显式调用
    库(网状,lib.loc=“/path/to/specific/library”)

  • 这个执行问题

    当我从RStudio中逐行运行它时,它工作正常。问题是,当脚本按计划运行时,它不起作用

    原因有多种:

  • 您有多个Python版本,其中
    smtplib
    安装在一个版本(例如,Python 2.7或Python 3.6)上,而不是另一个版本。检查命令行、
    Rscript-e“print(Sys.which(“Python”)”)”
    和RStudio、
    Sys.which(“Python”)
    正在使用哪种Python。显式定义要使用Networkite的
    运行的Python.exe使用\u Python(“/path/to/Python”)


  • 您有多个R版本,其中Rscript使用的版本与RStudio不同。检查两个:
    Rscript-e“print(R.home())”
    中的
    R.home()
    变量,并在RStudio中调用
    R.home()
    。在适当的R版本bin文件夹中显式调用所需的Rscript:
    /path/to/R#.#/bin/Rscript”/path/to/code.R“


  • 在同一个R版本上安装了多个
    networkite
    包,它们位于不同的库位置,每个包调用不同的Python版本。检查矩阵:
    installed.package()
    ,定位
    网状行。显式调用
    库(网状,lib.loc=“/path/to/specific/library”)


  • 谢谢冻糕!我将尝试所有这些解决方案,并报告效果。下一站再见,哈哈!很高兴帮助你,芝加哥人!事实证明,我只需要使用python脚本的绝对文件路径:source\u python(“C:/My\u Folders/../setup\u smtp.py”)。新手失误!再次感谢您的详细故障排除,当我有一个真正的问题:)谢谢冻糕!我将尝试所有这些解决方案,并报告效果。下一站再见,哈哈!很高兴帮助你,芝加哥人!事实证明,我只需要使用python脚本的绝对文件路径:source\u python(“C:/My\u Folders/../setup\u smtp.py”)。新手失误!再次感谢您为我提供了详细的故障排除,当我遇到真正的问题时:)
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    """
    Call from reticulate to log in to email
    """
    
    import smtplib
    
    my_email = '...'
    my_password = '...'
    
    smtpObj = smtplib.SMTP('smtp.office365.com', 587)
    smtpObj.ehlo()
    smtpObj.starttls()
    smtpObj.login(my_email, my_password)
    
    message = """From: My Name <email address>
    To: My Name <email address>
    Subject: Test successful!
    """