• ベストアンサー

Python拡張子(*.py)は必須か?

私の使っている本には: ”拡張子は必須ではありませんが”と、書いてあります。 しかし、実際として**.pyは付けないとwindowsではインタプリタの実行は行われません。 ここで、この問題点をPythonとWindowsの2つに分けて考えてみました。 Python自体には**.pyと言う拡張子をつける規則はないが、 Windowsとしては、**.pyの拡張子がないとPythonファイルとして認識しないので付ける。 以上で正しいでしょうか? それとも、私が使っている本の”拡張子は必須ではありませんが”が間違っているのでしょうか? 宜しく、願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • morchin
  • ベストアンサー率16% (212/1281)
回答No.1

私の環境(Windows XP Pro)では、拡張子を付けなくても問題なく実行できました。 Python自体には拡張子必須という規則はないようです。 ただし、モジュールをimportする場合は、必須のようです。 実行が行われないというのは、どういう実行方法で実行していますか? あとOSは何ですか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

回答No.4

>2) unix系OSや互換環境で #! (shebang)を使用する場合 >→ 1)とほぼ等価ですので、拡張子は関係ありません。 UNIX系OSにおいては一行目に書くパスとファイルのパーミッションの実行権ですね。

全文を見る
すると、全ての回答が全文表示されます。
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

1)「python スクリプト名」等として実行した場合 この場合は拡張子は関係ありません。.txt .pl 等でも構いません(混乱の元ですが) Windowsでも、コマンドプロンプト等から上記のように入力したり、ショートカットを上記のように設定した場合には同様です。 2) unix系OSや互換環境で #! (shebang)を使用する場合 → 1)とほぼ等価ですので、拡張子は関係ありません。 3) モジュールとして別のスクリプトから「import ~」として使う場合 → 「~.py」 である必要があります。 4) Windowsでスクリプトをダブルクリックで実行する場合 → このような場合に何を実行するか、を決める仕組みは、現状では「拡張子による関連付け」です。 #! のような、「実行するインタプリタを、そのスクリプトファイル自体で設定する」ような仕組みはありません。 よって、拡張子が必要です。 その本では、1),2)について述べていると思われます。

全文を見る
すると、全ての回答が全文表示されます。
noname#161640
noname#161640
回答No.2

>実際として**.pyは付けないとwindowsではインタプリタの実行は行われません。 Windows 7で試してみましたが、普通に実行できました。単に、ダブルクリックで実行できないというだけではないですか。これは単純にWindowsでの拡張子の関連づけの問題であってPythonとは別に何の関係もない話です。自分で登録すれば他の拡張子でも普通に起動できます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • gnuplot.py について

    目的:pythonで数値計算した結果をgnuplotで出力したい。 要点:Gnuplot を import できてもグラフを表示できない。 OS : Mac OS X 10.5 まず、SorceForge から ・numerical python (numpy-1.5.1-py2.7-python.org-macosx10.3) ・gnuplot.py (gnuplot-py-1.8.tar) をダウンロードしました。 次にterminalで上のそれぞれのファイルがあるディレクトリにいって、 >> python setup.py install としました。どうやら成功した模様です。 numpy と Gnuplot というフォルダが /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ というディレクトリにできています。 そして、IDLE の python shell で >>> import numpy >>> import Gnuplot としました。無事完了します。ここまではOKです。 しかし、試しに python shell から gnuplot で表示してみようとすると、IOError: [Errno 32] Broken pipe というエラーを表示します。たとえば、上に書いたディレクトリのGnuplot というフォルダの中に、test.py というスクリプトがあって、IDLE で開いて実行すると、次のような表示が出ます: This program exercises many of the features of Gnuplot.py. The commands that are actually sent to gnuplot are printed for your enjoyment. Popping up a blank gnuplot window on your screen. Press return to show results... Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Gnuplot/demo.py", line 110, in <module> demo() File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Gnuplot/demo.py", line 28, in demo g = Gnuplot.Gnuplot(debug=1) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Gnuplot/_Gnuplot.py", line 187, in __init__ self('set terminal %s' % (gp.GnuplotOpts.default_term,)) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Gnuplot/_Gnuplot.py", line 210, in __call__ self.gnuplot(s) File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/Gnuplot/gp_macosx.py", line 144, in __call__ self.flush() IOError: [Errno 32] Broken pipe 他のスクリプトを実行してみると、次の4つを除き正常に実行されます; _init.py, demo.py, test.py, gp_mac.py ただし、gp_mac.py だけは IOError: [Errno 32] Broken pipe ではなく、 ImportError: No module named Required_Suite というエラーです。 何が原因でしょうか?これを解決するにはどうしたらよいのでしょうか?

  • pythonについて

    私はプログラミングに興味があってmacでpython2.7を使っています。 python2.7でプログラムをファイルを書く方法が分かりません。 また、 python専用の本を持ってるのですが、「test.py」という部分があります。 “テキストエディット”、“AppleScript エディット”で保存するをクリックして 名前を「test、py」にできないのですが「test.py」にする必要はないのでしょうか? どなたかやり方を教えてください。

  • Pythonのプログラムの実行の考え方について

    pythonの教科書のサンプルの実行についてお尋ねします。 テキストのサンプルには普通、インタープリターで書いてあるものと、プログラムをファイルに書き出してそれをコマンドで一気に処理するもの(こちらの方が他の言語の実行に近いか)の2通りがあります。 インタープリター向きに記述されたものをファイルに書き出してpythonコマンドで、インタープリターと同じように実行するにはどのような書き換えが必要になるのでしょうか。結果を出力するときにインタープリターでは配列名を入力するだけでその内容が出力されたりしますが、ファイルではそれができないのでコマンドを指定するとかになると思いますが、他になにかあるでしょうか。 ファイルに書き出したプログラムの実行ですが、Pythonコマンドを実行しても実行形式の出力がないのでコンパイルではないわけですが、これはバッチとかシェルスクリプトと同じような意味になるのでしょうか。1行1行実行していくということですが。とするとインタープリターと同じになるのかなと思うのですが。 実行形式が単体のファイルとして出力されて単体として実行できるというのは従来のプログラム(C,Fortranなど)ですが、Pythonはそれがないわけですね。Ruby, Perlに近いものなのでしょうか。速度が求められる科学技術計算ではライブラリを導入して高速化できるということですが、どの程度かなと思いますが。その中間的なものがJavaなのかなと思いますが(半分実行ファイルみたな)。 たぶんベタな質問と思いますが、よろしくお願いします。

  • プログラム初心者です。unix上でのpythonについて

    unix環境でpythonを動かしているんですが、pythonの実行は python スクリプトファイル名.py でRETURNを押せばできるのはわかっているのですが、pythonを取り除いてスクリプトファイル名だけの入力で実行するようにしたいんです。 誰かご教授願えませんか?

  • pythonの文法について

    pythonの文法でfromは何を意味するものでしょうか? あとpy2exeでWindwosの実行ファイルができるらしいのですが 具体的な方法が知りたいです。 ActivePython 2.5を使っています。 あと、Cで拡張ライブラリを作成する場合はvc9,vc8, or vc6があればコンパイル可能でしょうか? サンプル等も知りたいです。

  • apacheで.pyファイルを扱いたい

    .pyファイルを表示しようとすると Object not found! となり、 URLの本来であれば~~.pyと表示される部分が %7B0%7D となってしまいます。 apacheが.pyファイルを実行ファイルとして認識していないんだと思うのですが どうしたら認識してくれるのか分りません。

    • ベストアンサー
    • CGI
  • pythonによるプログラムのコンパイルと実行

    Linux上ではプログラムの実行ファイルの作成は基本はmakeだったと思います。ワンパターンでmakeでMakefileに書いてあることが淡々と進行して実行ファイルができ、それを./abcなどと入力して実行する、そういうパターンだったと思います。make cleanとかおなじみだったと思います。最近はsetup.pyのようなものが用意されてpython setup.pyとすればコンパイルとか実行もそれだけでやってくれます。これは従来のmake系のこととはかなり違いますが、一方でpythonの中でmakeされているということになるのでしょうか。つまり、見た目が違うけれども裏側でやっていることは同じというコンセプトです。この辺をどう理解したらいいのでしょうか。pythonをc++, Javaのようなものと同格のもの捉えるものではないということになるのでしょうか。上記はunix, Linuxの例でしたが、Windows,Macではどういう位置づけになるのでしょうか。pythonを別格と考えるべきものでしょうか。

  • Python3.5をC++に組み込んで配布するには

    C++のプログラムから、PythonのC APIを使って内部的にPython3.5を実行するプログラムを作りました。 目標としては、別途Pythonをインストールしなくても、必要なコンポーネントを同梱して動くようにしたいのです。 手元のPCでは満足に動作していましたので、試しにほぼインストールしたままの状態のPCで動作させてみたところ動きませんでした。 調べたところ依存ファイルが足りず起動できていないようでしたので、一旦Pythonに同梱されていた python35.dllと、vcruntime140.dll をコピーして再実行しました。 今度は起動自体はできたのですが、Pythonの初期化が出来ず Py_Initialize() を実行するとプログラムがハングアップします。 正しくPythonを動かすには他に何が必要なのでしょうか?

  • [es]でpython2.5のファイル実行

    PythonCEのPython2.5を[es]にインストールしました。対話モードでは使えているのですが、作成したスクリプトファイルを実行する方法がわからなくて困っています。コマンドラインから >>>python ファイ名.py としても実行されません。 作成したスクリプトファイルを実行する方法を教えてください。 よろしくお願いします。

  • pythonのエラーについて教えて下さい。

    pythonの勉強をおこなっている超初心者です。 ネットでみた。以下のサンプルコードを実行しようとしました。 # -*- coding: utf-8 -*- print u'モジュールのロード' def test(): print u'関数:testを呼び出しました' if __name__ == '__main__': print 'python-izm' # print 'パイソンイズム' test() しかし、以下の様なエラーとなってしまいます。 File ”test02.py"、line 9 print ’python-izm'  ^ indentionError:expected an indented block ネット調べてみたとことpythonのインデントのエラーだとわかりました。 pythonはインデントで実行範囲を認識するので、 そこがうまく記述できていないであろうとは思うのですが、何回か試したのですが うまく動いてくれません。 どなたか御指南下さい。