36

sys.path私はそれが言及していることを理解しています

  1. システムライブラリを持つOSパス。私はこれら/libが*nixまたはWindowsWindowsで参照していると思います。
  2. 現在のディレクトリpythonが開始されました-Pythonが開始された場合C:\Python、これが現在のパスになります
  3. 環境変数$PYTHONPATHまたは%PYTHONPATH%-これは、コマンドラインからPythonバイナリを呼び出すことができるパスを指します
  4. 実行時にパスを追加できます-IDLEを実行すると理解できます

コマンドを実行することでパスを追加できますが、追加したパスを「削除」するsys.path.appendコマンドを実行すると、sys.path.remove追加できません。毎回IDLEを閉じなくてもそうする方法はありますか?

私はWindows7とUbuntuでPython2.7を実行しています

4

3 に答える 3

53

すべてが私のマシンで意図したとおりに機能します:)

Python 2.7.3 (default, Sep 26 2012, 21:51:14) 
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.append('/home/sergey')
>>> sys.path
['', ..., '/home/sergey']
>>> sys.path.remove('/home/sergey')
>>> sys.path
['', ...]
>>> 

具体的に何を試しましたか?

物事の理解について - いくつかの誤解があると思います:

  1. sys.pathシステム ライブラリではなく、Python モジュールを含むディレクトリのリストです。したがって、単純化すると、スクリプトに次のようなものがある場合import blah、Python インタープリターはそれらのディレクトリを 1 つずつチェックして、呼び出されたファイル(または内部にファイルを含むblah.py名前のサブディレクトリ) があるかどうかを確認します。blah__init__.py

  2. 現在のディレクトリは、スクリプトが配置されている場所であり、Python インタープリターが配置されている場所ではありません。foo.pyディレクトリにandがある場合、 inbar.pyを使用import barするfoo.pyと、同じディレクトリにあるため、モジュールが見つかります。

  3. sys.path$PYTHONPATH は、インタープリターの起動時に追加される環境変数です。繰り返しになりますが、これはモジュールの検索パスに関連しており、コマンド ラインから Python を起動することとは関係ありません。

  4. 正しい、実行時に変更できますsys.path-IDLEでPythonスクリプトを実行するときのいずれか

詳細については、 sys.pathサイトを参照してください。

于 2012-12-10T01:57:02.397 に答える