- ベストアンサー
Python拡張子(*.py)は必須か?
私の使っている本には: ”拡張子は必須ではありませんが”と、書いてあります。 しかし、実際として**.pyは付けないとwindowsではインタプリタの実行は行われません。 ここで、この問題点をPythonとWindowsの2つに分けて考えてみました。 Python自体には**.pyと言う拡張子をつける規則はないが、 Windowsとしては、**.pyの拡張子がないとPythonファイルとして認識しないので付ける。 以上で正しいでしょうか? それとも、私が使っている本の”拡張子は必須ではありませんが”が間違っているのでしょうか? 宜しく、願います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私の環境(Windows XP Pro)では、拡張子を付けなくても問題なく実行できました。 Python自体には拡張子必須という規則はないようです。 ただし、モジュールをimportする場合は、必須のようです。 実行が行われないというのは、どういう実行方法で実行していますか? あとOSは何ですか?
その他の回答 (3)
- oktuburero
- ベストアンサー率22% (102/446)
>2) unix系OSや互換環境で #! (shebang)を使用する場合 >→ 1)とほぼ等価ですので、拡張子は関係ありません。 UNIX系OSにおいては一行目に書くパスとファイルのパーミッションの実行権ですね。
- kmee
- ベストアンサー率55% (1857/3366)
1)「python スクリプト名」等として実行した場合 この場合は拡張子は関係ありません。.txt .pl 等でも構いません(混乱の元ですが) Windowsでも、コマンドプロンプト等から上記のように入力したり、ショートカットを上記のように設定した場合には同様です。 2) unix系OSや互換環境で #! (shebang)を使用する場合 → 1)とほぼ等価ですので、拡張子は関係ありません。 3) モジュールとして別のスクリプトから「import ~」として使う場合 → 「~.py」 である必要があります。 4) Windowsでスクリプトをダブルクリックで実行する場合 → このような場合に何を実行するか、を決める仕組みは、現状では「拡張子による関連付け」です。 #! のような、「実行するインタプリタを、そのスクリプトファイル自体で設定する」ような仕組みはありません。 よって、拡張子が必要です。 その本では、1),2)について述べていると思われます。
>実際として**.pyは付けないとwindowsではインタプリタの実行は行われません。 Windows 7で試してみましたが、普通に実行できました。単に、ダブルクリックで実行できないというだけではないですか。これは単純にWindowsでの拡張子の関連づけの問題であってPythonとは別に何の関係もない話です。自分で登録すれば他の拡張子でも普通に起動できます。