从Python搜索模块路径中删除路径

Pea*_*key 17 python-2.7

我明白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?

我在Windows 7和Ubuntu上运行Python 2.7

Ser*_*gey 35

一切都按照预期在我的机器上运行:)

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
['', ...]
>>> 
Run Code Online (Sandbox Code Playgroud)

你究竟尝试了什么?

关于你对事物的理解 - 我担心会有一些误解:

  1. sys.path是包含Python模块的目录列表,而不是系统库.因此,简化,当您import blah在脚本中有类似内容时,Python解释器会逐个检查这些目录,以检查是否存在调用的文件blah.py(或者blah使用__init__.py文件命名的子目录)

  2. 当前目录是脚本所在位置,而不是Python解释器的位置.因此,如果您拥有foo.py并且bar.py在目录中,则可以使用import barin,foo.py并且将找到该模块,因为它位于同一目录中.

  3. $ PYTHONPATH是一个环境变量,它将附加到sys.path解释器启动时.所以,它再次与模块搜索路径有关,与从命令行启动Python无关.

  4. 正确,你可以sys.path在运行时修改- 在IDLE中运行python脚本时

有关更多详细信息,请参阅sys.pathsite.