Удаление пути из пути поискового модуля Python

Я понимаю, что sys.path относится к

  • Пути ОС, в которых есть ваши системные библиотеки. Я полагаю, что они относятся к /lib в * nix или Windows в Windows.
  • текущая директория python началась с - я ее принимаю, если Python запущен с C:\Python, это будет текущий путь
  • переменная окружения $PYTHONPATH или% PYTHONPATH% - это путь, по которому я могу вызывать двоичный код Python из командной строки
  • вы можете добавлять пути во время выполнения - что я понимаю, когда я запускаю IDLE

Я могу добавлять пути, выполняя команду sys.path.append, однако, когда я запускаю команду sys.path.remove, чтобы "удалить" добавляемый путь, я не могу этого сделать. Есть ли способ сделать это, не закрывая каждый раз IDLE?

Я запускаю Python 2.7 на Windows 7, а также Ubuntu

Ответ 1

Все работает как на моем компьютере:)

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
['', ...]
>>> 

Что именно вы пробовали?

Что касается вашего понимания вещей - я боюсь, что есть некоторые недопонимания:

  • sys.path - список каталогов, содержащих модули Python, а не системные библиотеки. Итак, упрощая, когда у вас есть что-то вроде import blah в вашем script, интерпретатор Python проверяет эти каталоги один за другим, чтобы проверить, есть ли файл с именем blah.py (или подкаталог с именем blah с файлом __init__.py внутри)

  • В текущем каталоге находится script, а не где Python-интерпретатор. Поэтому, если у вас есть foo.py и bar.py в каталоге, вы можете использовать import bar в foo.py, и модуль будет найден, потому что он находится в том же каталоге.

  • $PYTHONPATH - это переменная среды, которая добавляется к sys.path при запуске интерпретатора. Таким образом, опять же, это связано с поиском по модулю и не имеет ничего общего с запуском Python из командной строки.

  • Правильно, вы можете изменить sys.path во время выполнения - либо при запуске python script в IDLE

Смотрите sys.path и site для более подробная информация.