1

Macで呼び出された場合は正常に実行されますが、Windowsホストから呼び出された場合は機能しないbashシェルプロビジョニングスクリプトを含むVagrantセットアップがあります。動作する行は、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をチェックするPYTHONPATHPATH、正しく設定されています。

スクリプトがVMにコピーされてそこから実行されることを考えると、WindowsまたはOSXホストから実行するスクリプトの間に(行末以外の)違いがどのようにあるかを理解するのは困難です。

ありがたいことにどんな助けも受けました。

(VMはUbuntu 12.04、32ビットです)

[更新1]

provision.shファイルに対して、4つの別々の場所でMD5ハッシュを実行しました。

  • ホストWindowsマシン、後git pull
  • ゲストVM、Windowsで実行、プロビジョニング後
  • ホストOSXマシン、後git pull
  • OSXで実行されているゲストVM、プロビジョニング後

また、ハッシュはそれぞれで同一です。つまり、OSXで実行されているVM上のファイルは機能し、Windows上のVMで実行されている同じファイルとバイト一致します。

したがって、これは、VMがセットアップされたときに暗黙的に発生するものです。しかし、マシンが両方で同一のVirtualBox VMを使用してセットアップされていることを考えると、おそらくこれはVirtualBoxの実装の問題ですか?

[更新2:回避策]

./manage.pyを完全なものに置き換えることでpython manage.py、スクリプトが機能するようになりました。これは、パスの問題であることを示唆していますが、これ以上掘り下げる忍耐力はありません。それは動作します、それは今のところうまくいくでしょう。

4

0 に答える 0