1. ホーム
  2. python

[解決済み] Pythonスクリプトのディレクトリにcdすることなく、コマンドラインで使用するにはどうしたらいいですか?それはPYTHONPATHですか?

2022-04-25 19:11:27

質問内容

PYTHONPATHを使いこなすにはどうしたらいいでしょうか?パス内のスクリプトを実行しようとすると、ファイルがありません。 が見つかりました。スクリプトがあるディレクトリにcdするとスクリプトが実行されます。では、この PYTHONPATH?

$ echo $PYTHONPATH
:/home/randy/lib/python

$ tree -L 1 '/home/randy/lib/python' 
/home/randy/lib/python
├── gbmx_html.py
├── gbmx.py
├── __init__.py
├── __pycache__
├── scripts
└── yesno.py

$ python gbmx.py -h
python: can't open file 'gbmx.py': [Errno 2] No such file or directory

$ cd '/home/randy/lib/python'

ファイルディレクトリにcdした後、...を実行します。

$ python gbmx.py -h
usage: gbmx.py [-h] [-b]

PYTHONPATHを一切利用できないのはなぜですか?

どうすればいいですか?

少し混乱しているようですね。PYTHONPATHは、検索パスを設定します。 インポート Python モジュールを実行するのではありません。

PYTHONPATH モジュールファイルのデフォルトの検索パスを補強します。このパスは 形式はシェルの PATH と同じです。 パス名をos.pathsepで区切ります(例:Unixのコロン、セミコロン)。 Windowsの場合)。存在しないディレクトリは黙って無視されます。

通常のディレクトリに加えて、PYTHONPATH の各エントリには、次のようなものがあります。 純粋な Python モジュールを含む zip ファイルを参照します。 コンパイルされた形式)。拡張モジュールは zip ファイルからインポートできません。

デフォルトの検索パスはインストールに依存しますが、一般的には は prefix/lib/pythonversion で始まります (上記の PYTHONHOME を参照してください)。これは は常にPYTHONPATHに追加されます。

検索パスの前に追加のディレクトリが挿入されます。 をPYTHONPATHの前に置くと、上記のインターフェイスオプションで説明したようになります。検索 パスは、Pythonプログラムの中で、変数 sys.path。

http://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH

探しているのはPATHです。

export PATH=$PATH:/home/randy/lib/python 

しかし、Pythonスクリプトをプログラムとして実行するには、さらに シバング を1行目でPythonに置き換えてください。このような感じで大丈夫でしょう。

#!/usr/bin/env python

そして、実行権限を与える。

chmod +x /home/randy/lib/python/gbmx.py

そうすると、単純に gmbx.py をどこからでも使えるようにする。