fabric在centos 7中运行:mkdir在控制台中运行,但不在fabfile.py中运行

问题描述 投票:0回答:1

我的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 centos7 fabric
1个回答
0
投票

我会说:当您可以使用python创建目录时,请勿使用外部命令创建目录。运行脚本时,由于某种原因,目录可能存在。然后将其删除。没关系。

为了避免目录存在时失败,只需在创建目录之前测试其是否存在。

if not os.path.isdir(env.version):
   os.mkdir(env.version)
   print("Created directory {}".format(env.version)

便携安全。

© www.soinside.com 2019 - 2024. All rights reserved.