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

时间:2012-12-10 01:47:44

标签: python-2.7

我理解sys.path指的是

  1. 具有系统库的操作系统路径。我认为这些是指* nix中的/lib或Windows上的Windows
  2. 当前目录python起始于 - 如果从C:\Python启动Python,我会接受它,这将是当前路径
  3. 环境变量$ PYTHONPATH或%PYTHONPATH% - 这是指我可以从命令行调用Python二进制文件的路径
  4. 你可以在运行时添加路径 - 我在运行IDLE时理解这一点
  5. 我可以通过运行命令sys.path.append来添加路径,但是当我运行命令sys.path.remove来“删除”我追加的路径时,我无法这样做。有没有办法这样做,而不必每次关闭IDLE?

    我在Windows 7和Ubuntu上运行Python 2.7

3 个答案:

答案 0 :(得分:31)

我的机器上的一切都按预期工作:)

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解释器会逐个检查这些目录,以检查是否存在名为blah.py的文件(或名为blah的子目录。内部__init__.py文件)

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

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

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

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

答案 1 :(得分:0)

我们可以在下面尝试从sys.path中插入,添加或删除

>>> import sys
>>>
>>> sys.path.insert(1, '/home/log')
>>> sys.path.append('/home/log')
>>> sys.path
['', '/home/log']
>>> sys.path.remove('/home/log')
>>> sys.path
>>> ['']
>>>

答案 2 :(得分:0)

使用

sys.path.append('path/to/file')

代替

sys.path.append('path/to/file/')

sys.path.remove()相同。