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

2024-05-21 03:34:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

^{pr2}$

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

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


Tags: pippyhttpsorgprojectpypipagetar
1条回答
网友
1楼 · 发布于 2024-05-21 03:34:15

这是故意的:如果您有多个Python安装,那么将这个文件作为可执行文件运行时,总是会调用它所安装的Python,而不管您当前的PATH。请参见pytest running with another version of python以了解这样做的一个例子,在这种情况下,它可以防止基于Python的系统脚本被破坏。在

^{}是执行此任务的代码(查找“shebang”)。在

完全没有理由(因此没有提供方法)禁用此功能:运行一个与安装目的不同的脚本实际上会破坏它。如果您真的需要,您可以始终运行<different python> <path_to_script.py>。正如Python的座右铭所言:“让正确的事情变得简单,让错误的事情变得困难”。在

相关问题 更多 >