我有一個類將檢查用戶環境以確定它們是否安裝了python
,這些類的目的是檢查用戶是否安裝了多個版本的Python,並且不默認爲三:通過任何不是字母的方式拆分數組
class CheckForPythonicVariables
class << self
def find_python_env_var
py_path = [] # Results of the python env variables
env_vars = ENV.to_h
items = env_vars["Path"].split(";") # Split the environment variables into an array
items.each { |var|
if var.to_s.include?("Python") # Do you have python?
py_path.push(var)
end
}
py_path.each { |python|
if python.include?("Python27") # Python 2.7.x?
return true
elsif python.include?("Python3") # Python 3.x.x?
return false
else
raise "You do not have python installed"
end
}
end
end
end
現在這個工作,但它僅適用於Windows和選擇幾個Linux OS
,顯然Parrot
是不是其中之一。有沒有辦法,我可以通過任何不是字母的環境變量#split()
?例如:
的Windows的環境變量:C:\Python27\;C:\Python27\Scripts;C:\ProgramData\Oracle\Java\javapath
鸚鵡OS的環境變量:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
注意怎樣的變量的任何一個分號(;
)或冒號(:
)分裂,是有辦法,我可以在ruby中使用#split()
函數,並且可以使用不是字母數字或數字的任何東西進行分割?或者有更好的方法來確保用戶的環境變量中有python 2.7.x
?
也許你可以簡單地使用分兩次?或者,根據操作系統:MS-DOS或Unix,你選擇了正確的分隔符? 作爲替代方案,也許你可以使用Ruby的命令行/ shell來查詢python版本? 'python -V' – Hugo
@Hugo系統調用問題('system('python --version')'我的確這麼認爲)是,如果他們有多個版本的python,它將默認爲3 – User9123