Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 从Python搜索模块路径中删除路径_Python 2.7 - Fatal编程技术网

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

Python 2.7 从Python搜索模块路径中删除路径,python-2.7,Python 2.7,我知道sys.path指的是 包含系统库的操作系统路径。我认为它们指的是*nix中的/lib,或Windows中的Windows 当前目录python起始于-我认为如果python起始于C:\python,这将是当前路径 环境变量$PYTHONPATH或%PYTHONPATH%-这是指我可以从命令行调用Python二进制文件的路径 您可以在运行时添加路径—我理解为在空闲时添加路径 我可以通过运行命令sys.path.append来添加路径,但是当我运行命令sys.path.remove来“删除”

我知道
sys.path
指的是

  • 包含系统库的操作系统路径。我认为它们指的是*nix中的
    /lib
    ,或Windows中的
    Windows
  • 当前目录python起始于-我认为如果python起始于
    C:\python
    ,这将是当前路径
  • 环境变量$PYTHONPATH或%PYTHONPATH%-这是指我可以从命令行调用Python二进制文件的路径
  • 您可以在运行时添加路径—我理解为在空闲时添加路径
  • 我可以通过运行命令
    sys.path.append
    来添加路径,但是当我运行命令
    sys.path.remove
    来“删除”我附加的路径时,我无法执行此操作。是否有一种方法可以做到这一点,而不必每次都关闭空闲


    我在Windows7上运行Python 2.7,在Ubuntu上运行

    我的机器上一切正常:)

    你到底试过什么

    关于你对事物的理解,恐怕有一些误解:

  • sys.path
    是包含Python模块而不是系统库的目录列表。因此,简化一下,当脚本中有类似于导入blah的内容时,Python解释器会逐个检查这些目录,以检查是否有一个名为
    blah.py
    (或一个名为
    blah
    的子目录,其中包含
    \uu init\uuuuu.py
    文件)

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

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

  • 正确,您可以在运行时修改
    sys.path
    ——或者在空闲状态下运行python脚本


  • 有关更多详细信息,请参阅和。

    我们可以尝试在下面插入、追加或从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
    >>> ['']
    >>>
    
    使用

    而不是

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

    sys.path.remove()

    相同,我运行了相同的确切命令,但第一次它不起作用,即,我遇到了一个无法删除的错误,但在我关闭IDLE并重新打开它后,再次运行该命令,它起作用了。我不知道为什么第一次没用。我对
    sys.path
    的理解是否正确?这个示例在Python空闲Shell中工作,但在Python程序中不起作用(当我在Python空闲Shell中键入
    import sys
    然后键入
    sys.path
    时,目录仍然存在。然后我必须执行
    sys.path.remove(“示例”)
    在Python IDLE Shell中删除我的示例目录。有人能解决这个问题吗?@Edward:对sys.path的更改不是永久性的,只会影响当前进程。如果您想在系统范围内进行更改,您需要查看站点包目录并进行一些更改。请参阅
    站点的lnk
    我链接的模块文档above@Sergey我明白你的意思。
    sys.path.append(item)也是如此
    permanent然后你知道为什么Python支持永久添加到
    sys.path
    ,但不支持从
    sys.path
    中永久删除项目吗?我发现在程序中对
    sys.path
    所做的任何编辑肯定不是永久的(当你重新启动Python shell时,它们就会消失)并且只存在于该程序的
    sys.path
    版本中。Sergy所说的绝对正确。
    sys.path.append('path/to/file')
    
    sys.path.append('path/to/file/')