我正在ansible-playbook通過類似的東西運行
subprocess.run(['bash', '-c', "ansible-playbook some_playbook.yml"])
卸載并重新安裝ansible-playbook我的專案后,不知何故無法再執行它聲稱"bash: ansible-playbook: command not found"。
事實:
- 在 Ubuntu 20.04 上運行
ansible-playbook通過安裝pip3
嘗試了以下方法:
確保該命令可通過終端 & 運行
python3洗掉
venv檔案夾并重新安裝所有內容(使用 PyCharm 自動安裝)通過
hash -r&洗掉了 Bash 快取hash -d ansible-playbook重新啟動
安裝
pyclean并運行它已洗掉的
.idea檔案夾(PyCharm)將存盤庫重新克隆到不同的目錄并重新設定所有內容。同樣的問題。
在同一個專案檔案夾中創建了一個虛擬測驗,發現它運行良好:
> cat test.py import subprocess process = subprocess.run(['bash', '-c', "ansible-playbook some_playbook.yml"])
重新安裝之前一切正常。我的程式在執行之前還會運行各種 Bash 命令ansible-playbook,我在左睪丸發誓這不是我的代碼。一定有一些我錯過的隱藏的神秘快取。
感謝您的任何建議!
uj5u.com熱心網友回復:
為了讓我的評論成為答案:
如果您以普通用戶的身份使用最近的 pip 安裝了該軟體包,它將安裝~/.local/bin默認情況下不在 PATH 上的庫和二進制檔案。(Pip 會警告你。)
一旦二進制檔案在 PATH 上,您就可以跳過額外的 shell 行程(這是不必要的,并且在某些情況下可能會導致奇怪的事情)并且不容易受到 shell 注入攻擊
import subprocess, shutil
subprocess.run([shutil.which("ansible-playbook"), "some_playbook.yml"])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/420069.html
標籤:
上一篇:numpy將值帶入一個范圍
