代码之家  ›  专栏  ›  技术社区  ›  Paul D. Waite

如何使用python找到我的python路径?

  •  287
  • Paul D. Waite  · 技术社区  · 15 年前

    PYTHONPATH 变量,来自Python脚本(或交互式shell)中?

    4 回复  |  直到 4 年前
        1
  •  685
  •   Vanuan tacaswell    5 年前

    您可能还需要:

    import sys
    print(sys.path)
    

    python -c "import sys; print('\n'.join(sys.path))"
    

    警告 :如果安装了多个Python版本,则应使用相应的命令 python2 python3 .

        2
  •  268
  •   Mark Ransom    11 年前

    sys.path 可能包括您的应用程序中未明确列出的项目 PYTHONPATH 环境变量。要直接查询变量,请使用:

    import os
    try:
        user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
    except KeyError:
        user_paths = []
    
        3
  •  12
  •   Vitali    14 年前

    似乎无法编辑其他答案。有一个小错误,因为它仅适用于Windows。更通用的解决方案是使用os.sep,如下所示:

    import os
    os.environ['PYTHONPATH'].split(os.pathsep)
    
        4
  •  7
  •   Leon Chang    6 年前

    PYTHONPATH是一个环境变量,其值为目录列表。一旦设置好,Python将使用它搜索导入的模块,以及Python的“sys.path”中列出的其他标准和第三方库目录。

    与任何其他环境变量一样,您可以在shell或~/.bashrc中导出它,请参阅 here 您可以在Python中查询os.environ['PYTHONPATH']的值,如下所示:

    $ python3 -c "import os, sys; print(os.environ['PYTHONPATH']); print(sys.path) if 'PYTHONPATH' in sorted(os.environ) else print('PYTHONPATH is not defined')"
    

    如果在shell中定义为

    $ export PYTHONPATH=$HOME/Documents/DjangoTutorial/mysite
    

    然后结果=>

    /home/Documents/DjangoTutorial/mysite
    ['', '/home/Documents/DjangoTutorial/mysite', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
    

    PYTHONPATH is not defined
    

    要将PYTHONPATH设置为多个路径,请参见 here

    请注意,可以在运行时通过sys.path.insert()、del或remove()添加或删除搜索路径,但不能通过os.environ[]。 例子:

    >>> os.environ['PYTHONPATH']="$HOME/Documents/DjangoTutorial/mysite"
    >>> 'PYTHONPATH' in sorted(os.environ)
    True
    >>> sys.path // but Not there
    ['', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
    
    >>> sys.path.insert(0,os.environ['PYTHONPATH'])
    >>> sys.path // It's there
    ['$HOME/Documents/DjangoTutorial/mysite', '', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages']
    >>> 
    

    总之,PYTHONPATH是为sys.path中导入的模块指定Python搜索路径的一种方法。您也可以不借助PYTHONPATH直接将列表操作应用于sys.path。

        5
  •  3
  •   juggler    4 年前

    在windows 10中工作,基本上与vanuan的答案相同,但更干净(取自某处,不记得在哪里……):

    import sys
    for p in sys.path:
        print(p)
    
        6
  •  2
  •   C4rnot    5 年前

    Python在给我一条错误消息时告诉我它的位置:)

    >>> import os
    >>> os.environ['PYTHONPATH'].split(os.pathsep)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Users\martin\AppData\Local\Programs\Python\Python36-32\lib\os.py", line 669, in __getitem__
        raise KeyError(key) from None
    KeyError: 'PYTHONPATH'
    >>>
    
        7
  •  1
  •   Rakend Dubba    4 年前
    import subprocess
    python_path = subprocess.check_output("which python", shell=True).strip()
    python_path = python_path.decode('utf-8')
    
        8
  •  0
  •   Sandro Braun    5 年前

    如果使用conda,可以使用 os.environ["CONDA_PREFIX"] .

        9
  •  0
  •   ZF007    4 年前
    import sys
    for a in sys.path:
        a.replace('\\\\','\\')
        print(a)
    

    它将提供所有可放置在窗口中的路径。