Jenkins部署之不識別python

前言

最近在使用jenkins部署自動化android打包。

有時間可以寫關於jenkins使用的文章。

本文就是記錄一些遇到的問題,不枉查了一些時間。



問題

配置jenkins後,使用windows命令行時,執行

py -3 script.py

報錯:大概意思是,py命令可識別python 2,但是不識別 python 3

在執行

python3 script.py

報錯:python3 不是內部或外部命令



解決

表象

解決的方案有很多]

  1. 使用python3的時候,對於調用的python可執行程序及腳本,使用絕對路徑
xxx\xxx\python.exe xxx\xxx\script.py
  1. 將python3路徑的python.exe路徑加入到 jenkins的環境變量中
Jenkins(根目錄) -> Manage Jenkins(管理) -> Global Attribute(全局屬性) -> Environment variables(環境變量) -> new(新增) -> 添加 鍵值對

根源

如果單純想解決問題,上面的方法是完全可以解決的。

但是有幾個缺點:

  1. 不通用,通常這些打包腳本都是普適於所有機器;在這臺機器上要把所有腳本都修改一遍
  2. 無法使用py命令,跟第一條普適性類似

因爲,上面解決方法只能說是繞行,不能算是從根源解決。


實際上,通過jenkins部署時輸出的日誌,也可以分析出一些。

在構建時,最上面輸出了一行 Running as SYSTEM,即使用系統環境變量來執行命令。

查看環境變量,發現python3的路徑都放在上面 Administrator的用戶變量中,並不是在下面的系統變量。

但是,在電腦執行命令行,默認也使用了Administrator用戶執行,所以能找到python3。

所以,如果想使用python3,就可以將python3路徑也加到系統變量中,

但是python可執行程序,無論2還是3,都是python.exe,需要自己處理一下(可以複製一份改名成 python2.exe 或 python3.exe)


接下來,是處理 py命令,py.exe 位於 C:\Windows ,它解析不同版本是通過註冊表來查詢的位置,所以,需要修改註冊表內容來讓py命令可以查找到各版本python。

查看註冊表方法:

開始菜單右鍵 -> 運行 -> regedit

系統變量 HKEY_LOCAL_MACHINE -> SOFTWARE -> PythonCore

個人變量 HKEY_CURRENT_USER -> SOFTWARE -> PythonCore

改完了還是重啓一下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章