首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么‘`pip install`似乎改变了某些机器上的解释器行?

为什么‘`pip install`似乎改变了某些机器上的解释器行?
EN

Stack Overflow用户
提问于 2018-05-28 09:12:11
回答 1查看 657关注 0票数 2

我将我的colorize.py包放到PyPi上,发现了以下奇怪的行为。如果我从project page下载colorize.py-0.9.1.tar.gz,并检查colorize.py的第一行,我会得到以下输出:

代码语言:javascript
复制
$ wget https://files.pythonhosted.org/packages/91/d8/805853c14a8ccf67ddfe2cf41b634395ef69a1138a0dade303bf4b7c9b45/colorize.py-0.9.1.tar.gz
$ tar xvfz colorize.py-0.9.1.tar.gz
$ head -n1 colorize.py-0.9.1/colorize.py
#!/usr/bin/env python

但是,在同一台我的Ubuntu 16.04.4 LTS笔记本电脑上,如果我使用pip安装,第一行是已经被替换:

代码语言:javascript
复制
$ pip install colorize.py
$ head -n1 $(which colorize.py)
#!/usr/bin/python

另一方面,我的朋友在她的OS X笔记本电脑上运行相同的安装命令,并获得原始的解释器行。

这是怎么回事,有没有可能强制pip在执行安装时不更改解释器行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-28 09:34:04

这是故意这样做的:如果您安装了多个Python,则作为可执行文件运行此文件将始终调用为其安装的Python,而与当前的PATH无关。在这种情况下,请参见pytest running with another version of python --具体地说,可以防止破坏基于Python语言的系统脚本。

pip/_vendor/distlib/scripts.py:_make_script()是完成这项工作的代码(查找"shebang")。

完全没有理由(因此没有提供方法)禁用此功能:使用与安装时不同的安装来运行脚本实际上肯定会破坏它。如果你真的想要,你可以随时运行<different python> <path_to_script.py>。正如Python的座右铭所说:“让正确的事情变得容易,让错误的事情变得困难”。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50557963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档