我有一个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(这是脚本作为安装的一部分被复制到的地方),它看起来很好。如果我在来宾VM上使用which python
,我会得到virtualenv版本,这正是我所期望的。如果我检查env vars,PYTHONPATH
和PATH
也已正确设置。
鉴于脚本被复制到VM然后从那里运行,很难理解从Windows或OSX主机运行它之间的差异(除了行结尾)。
感激不尽的任何帮助。
(VM是Ubuntu 12.04,32位)
[更新1]
我在provision.sh
文件上运行了一个MD5哈希,分别位于四个地方:
git pull
git pull
每个哈希都是相同的 - 即在OSX上运行的VM上的文件是有效的,是在Windows上运行在VM上的同一文件的字节匹配。
因此,它在设置时就隐含在虚拟机上。但鉴于机器在两者上使用相同的VirtualBox VM进行设置 - 也许这是VirtualBox实现问题?
[更新2:解决方法]
将./manage.py
替换为完整的python manage.py
我已经让脚本工作了,这表明这是一个路径问题,但是我没有耐心去深入挖掘。它有效,现在可以做到。