• ベストアンサー

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

まだプログラム初心者な上に、unix上でpythonを扱うことになりまして、わからないことができたので質問させてもらいます。 unix上でpythonを実行させるときは、普段 python スクリプト名.py でRETURNを押せばできるがこれをpythonを省略して、スクリプト名.pyだけで実行できるようにするにはどうせればいいか教えてください。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.6

>これ以上の省略はできないということなんですか? 普通は、自分の作ったコマンドは、自分のホームディレクトリの下に bin という名前のディレクトリを作って、そこに格納します。 おそらく、$PATH に $HOME/bin が含まれていると思いますので、 cd ~ mkdir bin mv csv.py bin で、 csv.py で実行できます。Windowsと違って、実行ファイルの拡張子に意味はないので、なくてもかまいません。つまり、csv.py を csv にリネームすれば、 csv で実行できます。 もし、上記でだめなら、$PATH に $HOME/bin が含まれていないので、.bash_profile に、下記を追加してください。 PATH=$PATH:$HOME/bin

yxia001
質問者

補足

すいません、初心者なのでつまらない質問させてもらいますが、.bash_profileって何ですか?

その他の回答 (5)

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.5

またも多重投稿すいません。 あと、自分の作った実行ファイルを、すでにPATHが通っている場所にコピーするという手もありますが、共用していないUNIXマシン以外ではおすすめできません。

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.4

> これ以上の省略はできないということなんですか? UNIXでもWindows(DOS:ここで内部コマンドは例外とします)でもコンソールから命令を入力した場合、その名称の実行ファイル(プログラム)が存在しない場合、当たり前ですが実行できないので実行不可エラーとなります。 この実行ファイルを探す場所をシステムは「pathという名称の環境変数」に記述しています。setコマンドでpathの内容を見るとディレクトリのリストが特定の記号で区切られてセットされていると思います。 Windows(DOS)環境の場合は、カレントディレクトリ→pathの順に目的のファイルを探しますが、Unix系だとpathのみが検索対象となってしまいます。 よって、UNIX上では自前のコマンド(プログラム)を実行したいなら、パスをコマンドの前に付けるか、環境変数pathにそのファイルのある場所を明示的に登録しなければいけません。

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.3

多重回答申し訳ありません。 パーミッションの実行権限も忘れないようにしてください。

  • ralf124c
  • ベストアンサー率52% (232/446)
回答No.2

その「csv.py」というファイルですが、カレントディレクトリ上ということで直に「csv.py」と入力していませんか? Windowsの場合は実行ファイルをカレント→パスの順で探してくれますがLinux系で探してくれるのはパス指定のもののみなので、カレントでどうにかしたいなら「./csv.py」とパス指定してやる必要があります。

yxia001
質問者

補足

そうなんですか。操作は自分のホームディレクトリにcsv.pyをおいてそこでしています。一応、./csvでは実行できました。ということは、これ以上の省略はできないということなんですか?

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.1

スクリプト一般で使える方法ですが、スクリプトの先頭行に #!/usr/bin/python と書けば、Pythonのパスが/usr/bin/pythonであれば実行できるかと。 あるいは #!/usr/bin/env python と書けば、pythonにパスが通っていれば実行できるかと思います。 # 参考 http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%90%E3%83%B3_(Unix)

参考URL:
http://ja.wikipedia.org/wiki/%E3%82%B7%E3%83%90%E3%83%B3_(Unix)
yxia001
質問者

補足

pythonは/usr/bin/pythonにあるので #!/usr/bin/pythonという シェバング行は入れたんですが動かないんです。 パスについてもいまいちわかってないので調べてみます。 ちなみにこんな感じのエラーが出たんです。 -bash: csv.py: command not found 

関連するQ&A

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

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

  • python プログラミング

    pythonで、 def CircleArea(): a=r*r*3.14 print(r,a) というプログラムをunixのvimでcircle.pyで保存しました。 今度はこれをpythonで実行したいと思って, ターミナルに, circle.pyと入力しましたが, 実行しません。どうすればよろしいでしょうか? よろしくお願いします。

  • pythonによるプログラムのコンパイルと実行

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

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

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

  • パソコンを変えるとpythonを使えなくなった

    スクリプトにimportしているものはtweepyのみです。 tweepyもpythonも最新のものをインストール済みです。 同じフォルダにある別の簡単なスクリプトは正常に動作しました。 PyScripterを使った時のエラーメッセージは以下のものとなります。 どうすれば改善されるか教えていただけないでしょうか。 Traceback (most recent call last): File "C:\Users\user7\Desktop\TC.py", line 19, in <module> tweets = api.user_timeline(Account, count=200, page=1, tweet_mode = 'extended') File "C:\Users\user7\AppData\Local\Programs\Python\Python310\lib\site-packages\tweepy\api.py", line 33, in wrapper return method(*args, **kwargs) File "C:\Users\user7\AppData\Local\Programs\Python\Python310\lib\site-packages\tweepy\api.py", line 46, in wrapper return method(*args, **kwargs) TypeError: API.user_timeline() takes 1 positional argument but 2 were given

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

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

  • pythonのプログラムを走らせるには?

    使用するソフトウェアの関係でWeb(HTMLまたはPHP)とPythonの連携が必要になりました。 しかしPythonをWebで扱ったことがなくいまいちどうしたらいいのか分りません。 <form action="/python/pythontest.py" method="GET">  <input type="submit" name="submit" value="更新"> </form> といった形で呼び出しているのですがファイルが開かれるだけでptythonのプログラムが実行されません。 pythonのプログラムは #!/usr/bin/env python # coding: utf-8 import cgi from datetime import datetime html_body = u""" <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> </head> <body> %s </body> </html>""" content='' print "Content-type: text/html;charset=utf-8\n" print (html_body % content).encode('utf-8') と書いています。 何が原因なのでしょうか? /usr/bin/env python のパスがうまく通っていないからでしょうか?

    • ベストアンサー
    • HTML
  • 別々に実行のpythonでグローバル変数できる?

    python初心者です。 例えばなんですが、 test1.py test2.py 2つのpythonコードを用意して、 test1.py側で1秒間ごとにインクリメントしていくループの処理を実行しながら、test2.pyではcronなどで定期実行させて、test1.pyでインクリメントさせている変数をprintしていくようなコードを作ることは可能でしょうか? 今回のような別々に実行させておいて、変数をtest1.py、test2.py間で変数を共有するようなグローバル変数というのはできますでしょうか? ご教示頂きますよう、どうぞよろしくお願い致します。

  • pythonについて

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

  • pythonでのCGI作成

    python で cgiを作成しているのですが、 if f.getfirst('btn1'):  ### 外部スクリプト起動 ###  os.system("python /var/www/cgi-bin/test.py") のように、このボタンが押されたら外部スクリプト起動のようにしたいのですが、どうすればいいでしょうか? たとえば、os.system("mkdir test")のようにすれば、上手くいくのですが、python ~やperl ~のようにすると上手くいきません・・・ (もしかするとapacheの設定か何か必要なのでしょうか?) 初心者丸出しの質問かもしれませんが、よろしくお願いします

    • 締切済み
    • CGI

専門家に質問してみよう