centos 7 中的 fabric 运行:mkdir 在控制台中工作但在 fabfile.py 中不工作
fabric running in centos 7: mkdir working in console but not in fabfile.py
我的 fabfile.py(Centos 7 机器)中有以下代码:
def deploy(version):
env.directory = os.path.join(env.config['home'], version, 've')
env.activate = os.path.join(env.directory, 'bin/activate')
env.version = os.path.join(env.config['home'],version)
print('this is the home dir')
print(env.config['home'])
print(env.version)
run('mkdir -v {}'.format(env.version))
在 运行 宁,我收到以下错误:
[mcvitty] Executing task 'deploy'
this is the home dir
/home/mcvitty
/home/mcvitty/3.6.3
[mcvitty] run: mkdir -v /home/mcvitty/3.6.3
[mcvitty] Login password for 'webapp':
[mcvitty] out: mkdir: cannot create directory ‘/home/mcvitty/3.6.3’: File exists
[mcvitty] out:
Fatal error: run() received nonzero return code 1 while executing!
Requested: mkdir -v /home/mcvitty/3.6.3
Executed: /bin/bash -l -c "mkdir -v /home/mcvitty/3.6.3"
但是如果我 运行 控制台上的罪魁祸首行 mkdir 工作正常:
/bin/bash -l -c "mkdir -v /home/mcvitty/3.6.3"
mkdir: created directory ‘/home/mcvitty/3.6.3’
我的代码有什么问题?
我会说:当你可以使用 python 时,不要使用外部命令来创建目录。当您 运行 您的脚本时,该目录很可能出于某种原因存在。然后它被删除了。没关系。
为避免目录存在时失败,请在创建目录前测试是否存在。
if not os.path.isdir(env.version):
os.mkdir(env.version)
print("Created directory {}".format(env.version)
便携且安全。
我的 fabfile.py(Centos 7 机器)中有以下代码:
def deploy(version):
env.directory = os.path.join(env.config['home'], version, 've')
env.activate = os.path.join(env.directory, 'bin/activate')
env.version = os.path.join(env.config['home'],version)
print('this is the home dir')
print(env.config['home'])
print(env.version)
run('mkdir -v {}'.format(env.version))
在 运行 宁,我收到以下错误:
[mcvitty] Executing task 'deploy'
this is the home dir
/home/mcvitty
/home/mcvitty/3.6.3
[mcvitty] run: mkdir -v /home/mcvitty/3.6.3
[mcvitty] Login password for 'webapp':
[mcvitty] out: mkdir: cannot create directory ‘/home/mcvitty/3.6.3’: File exists
[mcvitty] out:
Fatal error: run() received nonzero return code 1 while executing!
Requested: mkdir -v /home/mcvitty/3.6.3
Executed: /bin/bash -l -c "mkdir -v /home/mcvitty/3.6.3"
但是如果我 运行 控制台上的罪魁祸首行 mkdir 工作正常:
/bin/bash -l -c "mkdir -v /home/mcvitty/3.6.3"
mkdir: created directory ‘/home/mcvitty/3.6.3’
我的代码有什么问题?
我会说:当你可以使用 python 时,不要使用外部命令来创建目录。当您 运行 您的脚本时,该目录很可能出于某种原因存在。然后它被删除了。没关系。
为避免目录存在时失败,请在创建目录前测试是否存在。
if not os.path.isdir(env.version):
os.mkdir(env.version)
print("Created directory {}".format(env.version)
便携且安全。