【发布时间】:2011-09-05 11:32:38
【问题描述】:
好的,所以我有以下情况。我需要在目标 PC 上动态编辑 PYTHONPATH。现在项目的结构是:
trunk
bin
start_script
dependencies
dependencies
我可以从 python 做,从 start_script 开始:
root_path = os.path.split(os.path.dirname(os.path.abspath(__file__)))[0]
dependencies_root = os.path.join(root_path, 'dependencies')
from sys import path
path.extend([root_path, dependencies_root])
这可以解决问题,但我需要使用 process.Popen 启动新的 python 进程,并且对 sys.path 的更改似乎已经消失了。
现在我在想一个 sh 脚本会在这里做得更好,不幸的是我在这里完全是菜鸟,不知道如何继续。 sh 脚本基本上应该完成上面的 python 所做的事情,所以:
[1] Get the absolute path of the directory the script is located
[2] Get the parent of that folder (say parent_path)
[3] export PYTHONPATH=$PYTHONPATH:parent_path
[4] python start_script.py
所以基本上前两个步骤是我需要帮助的步骤。此外,如果有办法对 python 的 sys.path 进行更改,请在使用 subprocess.Popen 打开的子进程上持续存在,请告诉我。
【问题讨论】:
-
您也可以在更新 start_script 中的
sys.path的同时更新PYTHONPATH环境变量,使用os.environ字典。 -
目标平台是什么?例如,在 Linux 上,您可以期望人们拥有
realpath,但在 OSX 上,例如,它不是标准的。 Que Larry Wall 在此引用:“编写可移植 shell 比编写可移植 shell 脚本更容易”。 -
@MatToufoutu 这就是答案!回答并获得投票!
-
@MatToufoutu 谢谢,这正是我所需要的。
-
@tripleee 基本平台是 MacOS,但它最终应该是独立于平台的。
标签: python sh scripting-language