ここから本文です

「PATHを通す」事についての質問です。

hig********さん

2017/9/1800:19:06

「PATHを通す」事についての質問です。

Windows10を使っています。



Pythonのプログラムを実行しようとしているのですが、PATH関連でわからないことがあります。コマンドプロンプトで次のように入力すると正常に動作し、プログラムファイルを実行することができます。

python C:¥Users¥ユーザー名¥Documents¥ATOM¥test.py

テキストエディタATOMで作成したソースプログラムtest.pyをDocuments中のATOMというフォルダに入れています。

できれば次のように簡略化して書きたいです。

python test.py

そこで、省略したC:¥Users¥ユーザー名¥Documents¥ATOM¥の部分を環境変数のPATHに書き加えました。しかし、エラーがでてプログラムを実行できませんでした。










質問は2つです。

・今回のようにPATHはファイルの場所を探すときにも使えますか?(コマンドプロンプトでcdやset、pythonが使えるのは、そのコマンドが定義されているファイルにPATHが通っているからということは理解できています。)

・もし自分のやった事が合っているのであれば、どこが問題で上手く動いていないと思いますか?

初歩的な質問かと思いますが、どうかよろしくお願いします。

閲覧数:
132
回答数:
4

違反報告

ベストアンサーに選ばれた回答

ara********さん

2017/9/1800:32:00

1.いいえ

補足しておくと、CDやSETは内部コマンド(cd.exeやset.exeがあるわけではなく、OSがメモリー上に持っているコマンド)なので、パスに関係なくいつでもどこでも使えます。

2.pythonにパスが通してあるのなら、CDしてカレントディレクトリを C:¥Users¥ユーザー名¥Documents¥ATOM¥ にしておけば
>python test.py
で動くのではないでしょうか。

質問した人からのコメント

2017/9/19 21:35:58

ありがとうございます!
他の方々も大変勉強になりました!
今後も勉強頑張ります!

ベストアンサー以外の回答

1〜3件/3件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

cd6********さん

2017/9/1811:43:45

Perl や Ruby なら -S オプションでスクリプトファイルを
PATH から探して起動しますが、Python にはその機能はありません。

プロフィール画像

カテゴリマスター

ikt********さん

2017/9/1810:27:56

もう既に適切・親切な回答がされてますので、余計かと思いますが。

> ・今回のようにPATHはファイルの場所を探すときにも使えますか?
使えません。

解決方法の発想が逆(?)で、
・test.py というファイルがある場所が
・起点(カレントディレクトリ)になるように、
・コマンドプロンプトを開けばいい
んです。

具体的なやりかたはおくつかあります。
1. コマンドプロンプト 開いた後で、 C:¥Users¥ユーザー名¥Documents¥ATOM¥ へ移動する
⇒ 既にあなたが書いている cd コマンドが、それです。

2. 最初からそうなるようにコマンドプロンプトを開く
Windows10 なら、エクスプローラでC:¥Users¥ユーザー名¥Documents¥ATOM¥
のフォルダを Shift+右クリック で出てくるコンテキストメニューに
・コマンド ウィンドウをここで開く(W)
があります。

3. そういう ショートカット なりを作ってしまう。
デスクトップ(でもどこでもいいけど)に
・cmd.exe (コマンドプロンプトの正体) へのショートカットを作る
・その プロパティ の 作業フォルダー に C:¥Users¥ユーザー名¥Documents¥ATOM¥ をセットしとく
とすれば、ショートカットアイコンをダブルクリック で前記と
同じ結果になる。


P.S.
カレントディレクトリ と、ファイルの相対パス名 について、
ようついでだから、調べてみるといいと思います。
プログラミングするなら、階層型ファイルシステムと
その中でファイルを指定する方法の基礎知識は、
ないと早々に困ることになると思います。

2017/9/1809:42:58

まず、PATHというのは「環境変数」なのですが、「環境変数」というのはOSが保持している変数というか、文字列に名前をつけたもの、です。PATH以外にもいくつもの環境変数が使われていますし、任意の名前の環境変数を作ることも可能です。
で、一部のソフトウェアで、ある特定の仕事をするときにはある特定の名前の環境変数を調べて、それによって動作を変えるように作られているものもあります。

PATHについて言えば、大方の習慣としては'シェル'つまりユーザーインターフェースを担当するプログラムが、なにかアプリケーションを起動する時にそのプログラムの実行ファイルを探しに行く場所のリストです。
コマンドプロンプト('シェル'と呼ばれるプログラムの一例)で言えば、コマンドとして打ち込むつまり命令の頭の部分のファイル(多くはコマンド名.exe)を、PATHに書いてある場所から順次探して見つかれば実行する、というものです。


つまり。

コマンドプロンプト(それ自体はcmd.exe)がPATHを参照する有効範囲は、コマンド名のみ、質問の例で言えば'python'の部分だけ。コマンドプロンプトにはコマンド名に続いて入力されたオプション文字列がファイル名なのかそうでないのかというアプリケーション毎の規則は知る由もないのですから、勝手にファイル名として処理することは不可能です。
結果、コマンドプロンプトはPATHを参照してpython.exeを見つけ、以降のオプション文字列"C:¥Users¥ユーザー名¥Documents¥ATOM¥test.py"あるいは"test.py"をデータとしてpython.exeに丸投げしてあとは知ったことじゃない、それが必要ならpython側の分担ということになります。

普通は、python.exeはスクリプトのファイルの探索にPATHを適用することはしませんから、スクリプトはフルパスで与えなければいけないでしょう。


ただし、アプリケーションから環境変数を参照することは出来ますから、どうしてもというのであればpythonのソースコードに手を加えて、スクリプトの参照にPATHを利用するように改造することは決して不可能ではないと思います。まぁ、そういう用途の場合、PATHという既存の、汎く使われている環境変数を特殊用途に使うことは予期せぬトラブルの原因になったりするので避けるべきで、PYPATHとか(これは単なる今思っただけの名前)のオリジナルの環境変数を一つ設置してそこに記述するべきものでしょう。
(importするモジュールの検索についてはPYTHONPATHという環境変数を参照する仕組みがあるようですね)

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる