我有一個SAS腳本,我需要從中啓動一個Python腳本。我需要SAS腳本從PATH環境變量中找到「python.exe」文件的第一個路徑,而不是硬編碼到特定python安裝的路徑。從SAS運行Python腳本
這是我在嘗試使用代碼:
%let progdir = C:\Temp\scripts;
%let pypath = C:\Temp\pypath.txt;
x "if exist &pypath (del &pypath /Q)";
x "for %i in (python.exe) do @echo.%~$PATH:i >> &pypath"; run;
data null; infile "&pypath" length=reclen obs=1;
input location $varying254. reclen;
call symput('runpython', trim(location));
run;
x "%bquote(&runpython) &progdir./gtfs_collapse_routes.py";
x "if exist &pypath (del &pypath /Q)"; run;
第二x
調用似乎是正確執行,因爲&pypath
文件與預期的內容創建。但是,此代碼導致了SAS警告,我想消除:
警告:表面調用宏我沒有解決。
這顯然是在第二x
調用%i
的引用,但我在一個損失如何避免此警告。 (我本來想獲得使用x "where python >> &pypath"
Python路徑,但是這是沒有再創建一個文件,不知什麼原因,即使從CMD.EXE運行時,該命令的作品)
一個有用的督促在後從@Joe正確的方向,這是我更新,獲得Python路徑毫無預警工作代碼:當你想能夠解決宏觀變量
%let command = %nrstr(for %i in (python.exe) do @echo.%~$PATH:i);
x "&command >> &pypath"; run;
你有多少個Python安裝? – Parfait
@Parfait當前有5或6種,來自各種軟件包和Anaconda環境。 – nmpeterson