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

时间:2009-09-28 22:01:27

标签: python python-module pythonpath

如何从Python脚本(或交互式shell)中找出系统的PYTHONPATH变量中列出的目录?

9 个答案:

答案 0 :(得分:520)

你可能也想要这个:

import sys
print(sys.path)

或作为终端的一个班轮:

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

答案 1 :(得分:197)

sys.path可能包含未在PYTHONPATH环境变量中明确指定的项目。要直接查询变量,请使用:

import os
try:
    user_paths = os.environ['PYTHONPATH'].split(os.pathsep)
except KeyError:
    user_paths = []

答案 2 :(得分:10)

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

sys.path可能包含PYTHONPATH环境变量中未特别指定的项目。要直接查询变量,请使用:

import os
os.environ['PYTHONPATH'].split(os.pathsep)

答案 3 :(得分:2)

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

import sys
for p in sys.path:
    print(p)

答案 4 :(得分:1)

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')"

在外壳中定义为

的IF
$ 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']

ELSE结果=>

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 :(得分:1)

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'
>>>

答案 6 :(得分:0)

如果使用conda,则可以使用os.environ["CONDA_PREFIX"]获取env前缀。

答案 7 :(得分:0)

import sys
for a in sys.path:
    a.replace('\\\\','\\')
    print(a)

它将为Windows中的所有路径做好准备。

答案 8 :(得分:0)

import subprocess
python_path = subprocess.check_output("which python", shell=True).strip()
python_path = python_path.decode('utf-8')