1

我有一个 Vagrant 设置,其中包含一个 bash shell 配置脚本,该脚本在 Mac 上调用时运行良好,但在从 Windows 主机调用时不起作用。有效的行是调用 python 脚本的第一行:

foreman run ./manage.py syncdb --noinput

给出的错误是找不到python:

/usr/bin/env python
: File not found

我最初认为这只是一个行尾问题(CRLF v LF),但我检查了,行尾是正确的。

如果我 SSH 进入该框,并检查 /tmp/vagrant-shell (这是脚本作为安装的一部分复制到的位置),它看起来很好。如果我which python在来宾 VM 上使用,我会得到 virtualenv 版本,这正是我所期望的。如果我检查环境变量,PYTHONPATH并且PATH设置也正确。

鉴于脚本被复制到虚拟机,然后从那里运行,很难理解从 Windows 或 OSX 主机运行的脚本之间如何存在差异(除了行尾)。

感激地收到任何帮助。

(虚拟机是 Ubuntu 12.04,32 位)

[更新 1]

我在provision.sh文件上运行了 MD5 哈希,在四个不同的地方:

  • 主机 Windows 机器,之后git pull
  • 来宾 VM,在 Windows 上运行,后置备
  • 主机 OSX 机器,之后git pull
  • 来宾 VM,在 OSX 上运行,后置备

并且每个哈希值都是相同的 - 即运行在 OSX 上的 VM 上的文件是运行在 Windows 上的 VM 上的相同文件的字节匹配。

因此,它在设置时隐含在 VM 上。但是鉴于这台机器是在两者上使用相同的 VirtualBox VM 设置的 - 也许这是一个 VirtualBox 实现问题?

[更新 2:解决方法]

通过用./manage.py完整的替换,python manage.py我已经让脚本工作,这表明这是一个路径问题,但是我没有耐心进一步挖掘。它有效,现在可以。

4

0 回答 0