栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

python中sys.executable和sys.version不匹配

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python中sys.executable和sys.version不匹配

都@Graeme

python可能无法检索到它的事实表明它正在做自己的PATH搜索(…)

和@twalberg

(…)看起来sys.executable会搜索当前的PATH,而不是解析argv [0](或者可能是因为argv [0]在这种情况下是simpy
python …),(…)

基本上是正确的。我不愿意相信Python做的事情很简单(愚蠢?),就像

PATH
用来定位自己一样,但这是事实。

Python的

sys
模块在
Python/sysmodule.c
文件中实现。从版本2.7.6开始,
sys.executable
在第1422行设置如下:

 SET_SYS_FROM_STRING("executable",          PyString_FromString(Py_GetProgramFullPath()));

Py_GetProgramFullPath()
函数在
Modules/getpath.c
第701行开始的文件中定义:

char *Py_GetProgramFullPath(void){    if (!module_search_path)        calculate_path();    return progpath;}

函数

calcuate_path()
在同一文件中定义,并包含以下注释:

从我的案例可以看出,当导出的第一个Python

$PATH
与正在运行的Python不同时,一个人也会迷失。

关于计算解释的可执行的位置的过程的更多信息可以在找到顶部的

getpath.c
文件:

在执行任何搜索之前,必须确定可执行文件的位置。如果argv
[0]中包含一个或多个斜杠,则将其原样使用。否则,必须已经从外壳程序的路径中调用了它,因此我们在$ PATH中搜索命名的可执行文件并使用它。如果在$
PATH上找不到可执行文件(或没有$ PATH环境变量),则使用原始argv [0]字符串。

接下来,检查可执行位置以查看它是否是符号链接。如果是这样,则跟踪链接(如果找到一个,则正确解释相对路径名),并使用链接目标的目录。

让我们进行一些测试以验证以上内容:

如果argv [0]中包含一个或多个斜杠,则将其原样使用

[user@localhost ~]$ sudo /usr/local/bin/python what_python.py/usr/local/bin/python2.7.6 (default, Feb 27 2014, 17:05:07) [GCC 4.1.2 20080704 (Red Hat 4.1.2-54)]

好。

如果在$ PATH上找不到可执行文件(或没有$ PATH环境变量),则使用原始argv [0]字符串。

[user@localhost ~]$ sudo PATH= python what_python.py<empty line>2.7.6 (default, Feb 27 2014, 17:05:07) [GCC 4.1.2 20080704 (Red Hat 4.1.2-54)]

错误。在这种情况下,sys模块文档中的声明为true –
如果Python无法检索其可执行文件的真实路径,则sys.executable将为空字符串或None。

让我们看看将python二进制文件的位置添加回

PATH
(在sudo删除后)是否 解决 了问题:

[user@localhost ~]$ sudo PATH=$PATH python what_python.py/usr/local/bin/python2.7.6 (default, Feb 27 2014, 17:05:07) [GCC 4.1.2 20080704 (Red Hat 4.1.2-54)]

是的

有关:

  • Python问题7774 – sys.executable:如果修改了第零个命令参数,则位置错误。
  • Python问题10835 – sys.executable默认值和altinstall
  • python-dev邮件列表线程–更严格的sys.executable定义


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/640487.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号