Problema no arquivo Python do caminho raiz

0

Eu tenho um script bem testado e conhecido por estar funcionando. Eu estou correndo em um problema com ele onde quando eu tento executá-lo a partir de /root/backup/script.py ou ~/backup/script.py recebo um arquivo não encontrado erro do script quando ele é executado e procura por outros arquivos chamados de dentro do script. Ele funciona em outras máquinas, mas as configurações são as mesmas e funciona se eu estiver no meu diretório inicial e executar python backup/script.py ou executá-lo diretamente com python script.py . Os arquivos que ele está tentando obter estão dentro do mesmo diretório que o script.py, então não consigo ver o que está errado. Ele funciona para obter o primeiro arquivo que o script chama, mas não consegue obter este.

Estou pensando que poderia ser algum tipo de problema de caminho, já que funciona em outros sistemas, se for feito da mesma maneira.

EDITAR

depois de ler o primeiro comentário eu postei o trecho de código que está caindo e percebi que o primeiro arquivo também não está sendo encontrado como eu disse que estava arrependido pelo erro aqui é o código. Como eu disse acima, funciona de outro local, mas não os dois que mencionei.

storage = Storage("user_creds.dat")
credentials = storage.get()
if credentials is None or credentials.invalid:
        credentials = run_flow(flow_from_clientsecrets("client_secrets.json", OAUTH_SCOPE, ), storage, fla$
    
por bobthemac 23.05.2014 / 23:28

1 resposta

1

O erro de arquivo não encontrado pode ser devido a você ter iniciado o script de diretórios diferentes.

storage = Storage("user_creds.dat")

só encontrará user_creds.dat se o script for lançado a partir desse diretório, por exemplo,

]$ pwd
~/backup
]$ python script.py

Se você precisar iniciar o script de qualquer lugar, poderá especificar um caminho absoluto para user_creds.dat . Como alternativa, você pode usar o seguinte para obter o diretório em que o script está localizado:

os.path.dirname(os.path.realpath(__file__))

Você pode então pegar seu objeto Storage com

os.path.join(os.path.dirname(os.path.realpath(__file__)), 'user_creds.dat')
    
por 24.05.2014 / 01:44