首页 > 解决方案 > Python 调用(结构)sys.path 操作

问题描述

在更改sys.path. 这曾经奏效。但是现在使用fabric 2.5 和python 3.7,我无法弄清楚如何在任务中保留对sys.path 的更改。我有:

fabfile.py

import sys
from fabric import task

sys.path.insert(0, 'blah')
sys.path.append('blarg')
@task
def t(con):
    con.run('python3 tmp.py')

tmp.py

import sys
print(sys.path)

运行时既不blah也不blarg存在fab t。阅读文档,据我了解,这是一种遗留行为,但是新可用的配置、上下文管理器和包装器并没有为我提供改变它的方法,或者至少对我来说并不是很明显。有没有办法使用织物来实现这一点,还是我需要走另一条路?

标签: pythonfabric

解决方案


如果您实际上不需要一个是前置而另一个是附加,则可以通过env var执行此操作:

@fabric.task
def t(con):
    con.run('python3 tmp.py', env={"PYTHONPATH": "blah:blarg"})

在这种情况下,它们都将成为前置。


推荐阅读