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
指的是
/lib
,或Windows中的Windows
C:\python
,这将是当前路径sys.path.append
来添加路径,但是当我运行命令sys.path.remove
来“删除”我附加的路径时,我无法执行此操作。是否有一种方法可以做到这一点,而不必每次都关闭空闲
我在Windows7上运行Python 2.7,在Ubuntu上运行我的机器上一切正常:) 你到底试过什么 关于你对事物的理解,恐怕有一些误解:
sys.path
是包含Python模块而不是系统库的目录列表。因此,简化一下,当脚本中有类似于导入blah的内容时,Python解释器会逐个检查这些目录,以检查是否有一个名为blah.py
(或一个名为blah
的子目录,其中包含\uu init\uuuuu.py
文件)foo.py
和bar.py
,则可以在foo.py
中使用import bar
,模块将被找到,因为它位于同一目录中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/')