Sass 我想在本地mac中使用python从本地mac主机远程连接到SAS linux服务器

Sass 我想在本地mac中使用python从本地mac主机远程连接到SAS linux服务器,sass,sas,ssas,sas-macro,Sass,Sas,Ssas,Sas Macro,我正在尝试以下代码: sas = saspy.SASsession(cfgname='ssh', resutls='html',cfgfile='/Users/saumya.rb/opt/anaconda3/lib/python3.7/site-packages/saspy/sascfg.py') 错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/U

我正在尝试以下代码:

sas = saspy.SASsession(cfgname='ssh', resutls='html',cfgfile='/Users/saumya.rb/opt/anaconda3/lib/python3.7/site-packages/saspy/sascfg.py')
错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/saumya.rb/opt/anaconda3/lib/python3.7/site-packages/saspy/sasbase.py", line 415, in __init__
    self.sascfg            = SASconfig(**kwargs)
  File "/Users/saumya.rb/opt/anaconda3/lib/python3.7/site-packages/saspy/sasbase.py", line 130, in __init__
    SAScfg = self._find_config(cfg_override=kwargs.get('cfgfile'))
  File "/Users/saumya.rb/opt/anaconda3/lib/python3.7/site-packages/saspy/sasbase.py", line 267, in _find_config
    SAScfg = importlib.import_module(tempname)
  File "/Users/saumya.rb/opt/anaconda3/lib/python3.7/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 724, in exec_module
  File "<frozen importlib._bootstrap_external>", line 860, in get_code
  File "<frozen importlib._bootstrap_external>", line 791, in source_to_code
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/var/folders/pr/w_hplw1j7bl0vj2yj97_dd5mv3j_2t/T/tmp1bi7td8v/sascfg005.py", line 88
    'ssh'     : '/usr/bin/ssh',
              ^
SyntaxError: invalid syntax

出现的错误是因为字典条目之间缺少逗号:

ssh={'saspath':'/sashome/compute/SASFoundation/9.4/sas' “ssh”:“/usr/bin/ssh”

路径规范后需要一个逗号

至于autoexec,选项中列出的选项用于加载和运行远程SAS会话,而saspy autoexec是会话启动并连接到后saspy将为您提交的内容。因此,这两个选项略有不同

添加逗号并消除此语法错误,然后查看结果

谢谢,
Tom

您遇到的错误是因为字典条目之间缺少逗号:

ssh={'saspath':'/sashome/compute/SASFoundation/9.4/sas' “ssh”:“/usr/bin/ssh”

路径规范后需要一个逗号

至于autoexec,选项中列出的选项用于加载和运行远程SAS会话,而saspy autoexec是会话启动并连接到后saspy将为您提交的内容。因此,这两个选项略有不同

添加逗号并消除此语法错误,然后查看结果

谢谢,
Tom现在正在解决修复语法错误后收到的错误。 AttributeError:模块“os”没有属性“waitid” STDIO访问方法使用这个waitid方法,但它不在Python的Mac版本中。我修改了这个访问方法,使用waitpid而不是waitid,它解决了这个问题,现在这个访问方法可以从Mac客户端工作。具体来说,它是STDIO over SSH,因为SAS不会在Mac上本地运行。有关详细信息,请参阅saspy问题修理

这段代码目前处于主版本,但将在我构建的下一个版本V3.3.5中发布 研究另一个问题,以确保它不是特定于Mac。一旦解决了这个问题,我们将构建这个新版本

Saumya Ranjan,你能验证这个修复程序吗

谢谢,
Tom现在正在解决修复语法错误后收到的错误。 AttributeError:模块“os”没有属性“waitid” STDIO访问方法使用这个waitid方法,但它不在Python的Mac版本中。我修改了这个访问方法,使用waitpid而不是waitid,它解决了这个问题,现在这个访问方法可以从Mac客户端工作。具体来说,它是STDIO over SSH,因为SAS不会在Mac上本地运行。有关详细信息,请参阅saspy问题修理

这段代码目前处于主版本,但将在我构建的下一个版本V3.3.5中发布 研究另一个问题,以确保它不是特定于Mac。一旦解决了这个问题,我们将构建这个新版本

Saumya Ranjan,你能验证这个修复程序吗

谢谢,
Tom

显示您在saspy配置文件中输入的内容。您告诉saspy使用哪种方法连接到SAS?您是否尝试将外壳安装到Unix主机并运行命令行SAS?或者您是否有一个应用程序服务器,您连接到该服务器将为您启动SAS会话?添加了配置文件的详细信息,不使用任何应用程序n服务器为什么要将SAS libname语句列为autoexec的设置?为什么需要它?您没有在“选项”中告诉它autoexec设置吗?显示您在saspy配置文件中输入的内容。您告诉saspy使用哪种方法连接到SAS?您是否尝试将外壳插入Unix主机并运行命令行SAS?或者您是否有一个连接到的应用程序服务器,它将为您启动SAS会话?添加了配置文件的详细信息,不使用任何应用程序服务器。为什么您有一个SAS libname语句列为autoexec的设置?为什么您需要它?您没有告诉它选项中的autoexec设置吗?如果saspy正在使用second“自动EXE”作为手动发送给SAS的代码,可能最好将该参数命名为其他名称。另一个例子说明了为什么我总是将连续字符(如字典中的逗号)放在行的开头。这样,扫描程序的人就可以看到它们。如果你将它们放在程序行的末尾,那么它们因为右边缘是锯齿状的,所以很难看到。更糟糕的是,很多时候,线条太长,以至于线条的末端不在视线范围内,或者更糟的是不在屏幕上。谢谢Tom,让我检查一下回溯(最后一次调用):文件“/opt/anaconda3/lib/python3.7/site packages/saspy/sasbase.py”中的第1行文件“”,第442行,在init self中。_io=SASsessionSTDIO(sascfgname=self.sascfg.name,sb=self,**kwargs)文件“/opt/anaconda3/lib/python3.7/site packages/saspy/sasiostdio.py”,第205行,在init self中。_startsas()文件“opt/anaconda3/lib/python3.7/site packages/sasiostdio.py”,第343行,在_startsasrc=os.waitid中(os.P|PID,self.PID,os.WEXITED | os.WNOHANG)AttributeError:Tom,回想起来,模块“os”没有属性“waitid”,可能saspy键应该命名为autosubmit,而不是autoexec。如果saspy使用第二个“AutoExe”作为手动发送给SAS的代码,可能最好将该参数命名为其他名称。另一个例子说明了为什么我总是将连续字符(如字典中的逗号)放在行的开头。这样,扫描程序的人就可以看到它们。如果你将它们放在程序行的末尾,那么它们因为右边缘是锯齿状的,所以很难看到。更糟糕的是,很多时候,线条太长,以至于线条的末端不在视线范围内,或者更糟的是不在屏幕上。谢谢Tom,让我检查一下回溯(最后一次调用):文件“/opt/anaconda3/lib/python3.7/site packages/saspy/sasbase.py”中的第1行文件“”,第442行,在init self.\u io=SASsessionSTDIO(sascfgname=self.sascfg.name,sb=self,**kwargs)文件“/opt/anaconda3/lib/python3.7/site-packages/saspy/sasios
using below config :

default  = {'saspath'  : '/sashome/compute/SASFoundation/9.4/sas'
            'ssh'      : '/usr/bin/ssh',
            'options'  : ["-fullstimer", "-autoexec", "/SAS9.4/SASConfig_bkp/compute/Lev1/SASApp/StoredProcessServer/autoexec.sas"],
            'autoexec' : "libname mylib '/ngs/app/sasp';",
            'host'     : 'remote.linux.host',
            'options'  : ["-fullstimer"]
            }


#ssh      = {'saspath' : '/opt/sasinside/SASHome/SASFoundation/9.4/bin/sas_en',
#            'ssh'     : '/usr/bin/ssh',
#            'host'    : 'remote.linux.host', 
#            'encoding': 'latin1',
#            'options' : ["-fullstimer"]
#            }
#
ssh      = {'saspath'  : '/sashome/compute/SASFoundation/9.4/sas'
            'ssh'      : '/usr/bin/ssh',
            'options'  : ["-fullstimer", "-autoexec", "/ngs/app/sasp/SAS9.4/SASConfig_bkp/compute/Lev1/SASApp/StoredProcessServer/autoexec.sas"],
            'autoexec' : "libname mylib '/ngs/app/sasp';",
            'host'     : 'remote.linux.host',
            'options'  : ["-fullstimer"]
            }