calculate_program_full_path()
function in
Module/getpath.c
,准确地说。它通常基于
argv[0]
OS传入的值。
可以通过设置
PYTHONEXECUTABLE
environment variable
sys.executable
直接在
sitecustomize.py
module
generated at install time
:
$ tail -n2 /usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/sitecustomize.py
# Set the sys.executable to use the opt_prefix
sys.executable = '/usr/local/opt/python/bin/python3.7'
这就轻率地忽略了
蟒蛇
即使设定了。
那么到底是怎么回事,为什么自制啤酒会轰动一时呢
?
自制Python是一个
MacOS framework build
,因此可以使用此Python二进制文件运行GUI应用程序。苹果对框架包中的二进制文件提出了非常严格的要求,包括允许将可执行文件名设置为什么。为了解决这些问题,二进制框架实际上是一个
wrapper
)这意味着要走一条更好的路
__PYVENV_LAUNCHER__
实际的
Resources/Python.app/Contents/MacOS/Python
,然后使用
要通知的环境变量
系统可执行文件
.
包装器设置的路径有任何符号链接
在目录名中
/usr/local/opt/python
指向特定Python瓶子目录的符号链接,运行
/usr/local/opt/python/bin/python3
结果
系统可执行文件
$ /usr/local/opt/python/bin/python3 -S -c 'import sys; print(sys.executable)'
/usr/local/Cellar/python/3.7.0/bin/python3
这违背了symlink的目的,每次自制程序对Python公式进行小版本更新时,都会导致pip安装的脚本损坏。
检查是否
蟒蛇
在这里你可以通过设置
系统可执行文件
直接:
import os, sys
if 'PYTHONEXECUTABLE' in os.environ and :
sys.executable = os.environ['PYTHONEXECUTABLE']
我打开了一份报告
to request the homebrew Python formula checks for
PYTHONEXECUTABLE
included a suggested fix
. 修复程序于2018年11月28日发布,因此只需更新Python包就可以获得新版本,并使自制Python获得荣誉
蟒蛇
再一次