Python 调用(结构)sys.path 操作
Python invoke (fabric) sys.path manipulation
在更改 sys.path
后,我继承了使用 fabric 执行 运行 命令的代码。这曾经有效。但是现在使用 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)
当 运行 宁 fab t
时,blah
和 blarg
都不存在。阅读文档,据我所知,这是一个遗留行为,但新可用的配置、上下文管理器和包装器并没有为我提供改变它的方法,或者至少对我来说不是很明显。有没有办法使用 fabric 实现此目的,还是我需要走另一条路?
如果您实际上不需要一个是前置项,另一个是附加项,您可以通过 the env var:
@fabric.task
def t(con):
con.run('python3 tmp.py', env={"PYTHONPATH": "blah:blarg"})
在这种情况下,它们都是前缀。
在更改 sys.path
后,我继承了使用 fabric 执行 运行 命令的代码。这曾经有效。但是现在使用 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)
当 运行 宁 fab t
时,blah
和 blarg
都不存在。阅读文档,据我所知,这是一个遗留行为,但新可用的配置、上下文管理器和包装器并没有为我提供改变它的方法,或者至少对我来说不是很明显。有没有办法使用 fabric 实现此目的,还是我需要走另一条路?
如果您实际上不需要一个是前置项,另一个是附加项,您可以通过 the env var:
@fabric.task
def t(con):
con.run('python3 tmp.py', env={"PYTHONPATH": "blah:blarg"})
在这种情况下,它们都是前缀。