36

我理解是sys.path

  1. 具有系统库的操作系统路径。我认为这些是/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

4

3 回答 3

53

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

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.py一个bar.py目录,你可以使用import barinfoo.py并且模块会被找到,因为它在同一个目录中。

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

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

有关详细信息,请参阅sys.path站点。

于 2012-12-10T01:57:02.397 回答
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
>>> ['']
>>>
于 2020-01-22T12:13:19.890 回答
-2

采用

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

代替

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

与 相同sys.path.remove()

于 2020-03-19T23:19:51.607 回答