2017-08-23 16 views
0

私は、このような奇妙な状況に遭遇しました:Pythonは絶対スクリプトを実行できませんか?

[email protected]/~>python test.py 
test 
[email protected]/~>pwd 
/home/naivechou 
[email protected]/~>python /home/naivechou/test.py 
C:\toolchain\python\python.exe: can't open file '/home/naivechou/test.py': [Errno 2] No such file or directory 

私の作業ディレクトリがtest.pyがそこにある、/home/naivechou/です。 絶対パスでtest.pyを実行すると、エラーメッセージがNo such file or directoryと表示されますが、そのディレクトリに移動して実行するとすべて正常に動作します。 Pythonで何が問題になっていますか?

+1

私はWindowsを使っていると仮定していますが、作業ディレクトリが '/ホーム/ naivechou /'であると言っています。もっと情報をお願いしますか? –

+0

Windowsでは、コマンドラインでディレクトリ区切り記号としてフォワードスラッシュを使用するとは思われません。 'python \ home \ naivechou \ test.py'を試して、何が起こるか見てみましょう。 –

+0

@JohnGordonこれは 'cmd.exe'のいぼです。 Windows(カーネル、API)はスラッシュを完全に理解しています。 – phd

答えて

0

pythonスクリプトがあるフォルダに移動し、そこにLinuxの "ls"コマンドを実行してみてください。窓が 'dir'をするなら。あなたがそこに必要なファイルを参照してください場合は、次のコマンドをコマンドラインに入力したコマンドについては

C:\location_where_the_script_is> python yourfile.py 
+1

彼はすでにこれをやっています。文字通り、彼の例における最初のコマンドです。 –

+0

彼はフォルダに移動していますが、ファイルがフォルダ内に存在するかどうかをチェックしません。 –

+1

がTrueです。しかし、彼はPythonから "ファイルが見つかりません"というエラーを受け取っていないので、そこになければなりません。 –

0

を実行し、Windowsがディレクトリの区切りとして、フォワードスラッシュを認識しません。

あなたの2番目の例では、現在のディレクトリのがリテラルファイル名/home/naivechou/test.pyであり、そのようなファイル名は存在しません。

使用バックスラッシュではなく、Windowsの道であるとして:

python \home\naivechou\test.py

+0

Windowsのpython.exeは、スクリプトパスにスラッシュを使用しても問題ありません。 CMDはそれを解析することとは関係ありません。作業用ドライブが '/ home'を持つボリュームと同じボリュームであると仮定するのは問題です。 Windowsには単一のルートがありません。しかし、OPがCygwinを使用していることが判明したので、これは問題ではありません。問題はOPがWindows Python(つまり、 'C:\ toolchain \ python \ python.exe')を実行していて、Cygwinの' python'のようにUnixパスを渡していることです。 – eryksun

関連する問題