为什么在FinalBuilder网站上调用gsutil失败,但在FinalBuilder应用程序中运行却成功?

3
我有一个 .bat 文件,其中包含以下 gsutil 命令,用于将文件推送到 Google Cloud:
python "C:\Program Files (x86)\gsutil\gsutil" -D -m cp -a public-read C:\Temp\MyMSI.msi gs://downloads-gs.mywebsite.com/binaries/myapplication/auto_installer/

这是我的输出结果(为了保密,有些名称已更改):

----------------------------------------------------------
Copy to google  11:02:33 AM 11:02:34 AM 00:00:00:479    Failed (Ignored)
Collapse    Messages    
Messages                
Collapse        
Executing external process: C:\Windows\system32\cmd.exe

Starting Directory: C:\BuildScripts
Parameters: /c "c:\buildscripts\push_goog.bat"
Collapse        
Output from C:\Windows\system32\cmd.exe

The system cannot find the drive specified.

C:\BuildScripts>pushd c:\BuildScripts\ 

The system cannot find the drive specified.
Traceback (most recent call last):
  File "C:\Program Files (x86)\gsutil\gsutil", line 67, in <module>
    from gslib.util import UsingCrcmodExtension
  File "C:\Program Files (x86)\gsutil\gslib\util.py", line 121, in <module>
    os.path.join(CreateTrackerDirIfNeeded(), '.last_software_update_check'))
  File "C:\Program Files (x86)\gsutil\gslib\util.py", line 108, in CreateTrackerDirIfNeeded
    os.makedirs(tracker_dir)
  File "C:\Python27\lib\os.py", line 150, in makedirs
    makedirs(head, mode)
**C:\BuildScripts>python "C:\Program Files (x86)\gsutil\gsutil" -D -m cp -a public-read C:\Temp\MyMSI.msi gs://downloads-gs.mywebsite.com/binaries/myapplication/auto_installer/**
  File "C:\Python27\lib\os.py", line 157, in makedirs
    mkdir(name, mode)
WindowsError: [Error 3] The system cannot find the path specified: 'H:\\\\'
Program returned code  : 1

这段文字提到了H:\\\\,但我们从未在.bat文件或gsutil的参数中提到过它。我不确定为什么在从FinalBuilder应用程序运行时可以完美地运行,但当FinalBuilder网站运行相同的FinalBuilder应用程序文件时,只是通过FinalBuilder Server触发时会出现此错误。

希望能得到帮助。


你的主目录在哪里?我们使用 os.path.expanduser 来查找它。它可以设置为 H 吗? - jterrace
我明白了!HOMEDRIVE被设置为H: ...问题是我认为出于IT目的,我们需要在那台服务器上将其设置为那样。有什么解决办法吗?我能硬编码告诉它那个目录在哪里,而不是让它自己去找吗? - Brian T Hannan
1个回答

3

这个问题的根本原因是您的主目录设置为无效位置。

作为解决方法,您可以在.boto配置文件中更改跟踪器目录。以下是相关部分:

[GSUtil]
# 'resumable_tracker_dir' specifies the base location where resumable
# transfer tracker files are saved. By default they're in ~/.gsutil
#resumable_tracker_dir = <file path>

取消注释resumable_tracker_dir变量,并将其设置为磁盘上存在的位置。


.boto配置文件位于哪里? - Brian T Hannan
1
通常在您的主目录中。当您运行gsutil config时,它应该会告诉您它被放置在哪里。如果您需要移动它或再次运行gsutil config,则可以设置BOTO_CONFIG环境变量以移动配置文件的位置。 - jterrace
1
具有讽刺意味的是,通常它位于您的主目录中。不过,您可以通过设置BOTO_CONFIG环境变量来指定.boto文件的位置。您还可以像这样从命令行设置单个属性:"gsutil -m GSUtil:resumable_tracker_dir=SOME_VALID_PATH rest of command" - Brandon Yarbrough
最终找到了.boto文件,它在H:\驱动器上,所以我将resumable_tracker_dir更改为C:\BuildScripts\gsutil,这是我刚刚创建的。然而,我仍然得到完全相同的错误。当它工作时,它会写入新目录。当它不工作时,它甚至无法将任何内容写入该目录。 - Brian T Hannan
奇怪的是,当我从FinalBuilder应用程序中运行它时(它可以正常工作,并显示使用新的resumable_tracker_dir),但当它从FinalBuilder网站失败时,它仍然显示找不到H:\\ .... 这里为什么要有4个斜杠?我仍然不理解这一部分。 - Brian T Hannan
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接