如何健壮地检索python环境的bin路径?

时间:2018-02-02 04:12:07

标签: python python-3.x python-2.7

我已经弄清楚如何检索python环境的include和site-package路径。例如,以下是one of multiple possibilities

from distutils.sysconfig import get_python_lib, get_python_inc
print(get_python_lib()) # Prints the location of site-packages
print(get_python_inc()) # Prints the location of the include dir

然而,我无法找到一个健壮的方法来检索python环境的bin文件夹,也就是说,python本身和pip,pyinstaller,easy_install等工具通常驻留的文件夹。有谁知道如何从python中获取这条路径?

有些人可能会建议binpath = os.path.dirname(sys.executable)。但是在Mac上,如果将python作为框架安装(binpath指向:/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS

,则无效

我可以使用哪种方式跨平台工作?

1 个答案:

答案 0 :(得分:4)

安装程序可以将二进制文件放在文件系统的任何位置(给定权限)。但是,由于现在大多数软件包可能都安装了pip,因此在安装发行版时,pip本身会使用跨平台方法:

from pip.locations import bin_py

请注意,pip包含在当前版本的Python中,因此这应该适用于所有地方。另外要提一下的是,安装在用户站点中的发行版会将其控制台脚本等放入用户站点,但是您也有一个用于查找用户bin的属性:

pip.locations.bin_user

编辑: 今天我找到了一种stdlib方式来获取sysconfig模块的此信息。适用于2.7和3.3 +。

>>> from sysconfig import get_paths
>>> get_paths()['scripts']
'/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/bin'