繁体   English   中英

为什么“ pip install”似乎会更改某些计算机上的解释器行?

[英]Why does `pip install` seem to change the interpreter line on some machines?

我将我的colorize.py包放到PyPi ,发现了以下奇怪行为。 如果从项目页面下载colorize.py-0.9.1.tar.gz ,然后检查colorize.py的第一行, colorize.py-0.9.1.tar.gz得到以下输出:

$ 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安装,则第一行已被替换:

$ pip install colorize.py
$ head -n1 $(which colorize.py)
#!/usr/bin/python

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

这是怎么回事,执行安装时是否可以强制pip不更改解释器行?

这是有意完成的:如果您安装了多个Python,则无论您当前使用的PATH如何,将此文件作为可执行文件运行都会始终调用为其安装的Python。 请参阅在另一版本的python上运行pytest,以了解是否有所不同-特别是防止基于Python的系统脚本损坏。

pip/_vendor/distlib/scripts.py:_make_script()是完成任务的代码(查找“ shebang”)。

绝对没有理由(因此没有提供的方法)禁用此功能:运行脚本时所用的安装与其安装的目的不同,实际上可以保证将其破坏。 如果确实需要,可以始终运行<different python> <path_to_script.py> 正如Python的座右铭所说:“使正确的事情变得容易,使错误的事情变得困难”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM