[英]Run Python script that affect parent shell (changes environment variables, runs other scripts, etc.)
最近我需要影響從 python script iteft 運行 python 腳本的 bash shell。 我開發了一個Python 實用程序包,它為pip
添加了一些額外的功能。 此包中的工作流之一需要激活 Virtualenv 才能按計划工作。 這是問題所在。
當你運行類似的東西時:
os.system('/bin/bash ./venv/bin/activate')
或者:
subprocess.Popen(['/bin/bash', './venv/bin/activate')
執行腳本時,它不會對 shell 做任何事情。 基本上是因為這些命令是在隔離進程中執行的(我猜),因此不會影響 bash 進程本身。
問題:如何影響從腳本內部執行 python 腳本的父 shell(添加一些環境,運行其他腳本等)?
提前致謝。
如何影響從腳本內部執行 python 腳本的父 shell(添加一些環境,運行其他腳本等)?
這是不可能的,除非你的操作系統壞了。 進程隔離是操作系統的基本概念之一。
相反,研究venv
的作用及其工作原理以及activate
腳本的作用,然后將正確的目錄添加到 python 模塊搜索路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.