为什么Python脚本的第二行会影响pip的安装方式?

时间:2018-05-04 20:18:04

标签: python python-3.x installation pip

问题pip3 installsetuptools以一种意想不到的方式阻止了shebang shell脚本。我试图了解它是如何工作的以及如何控制它。

会发生什么:在macOS 10.13上,我使用macports安装的Python 3.5。我已经开发了Python 3软件包,目前可以通过以下简单的过程进行安装:

git clone https://github.com/project/mypackage.git
cd mypackage
sudo pip3 install .

包的setup.py包含以下内容:

scripts = ['bin/somescript'],

每个这样的脚本都有以下第一行:

#!/usr/bin/env python3

今天,我发现pip3在安装过程中以一种依赖于脚本的第二行的方式管理shebang线。特别是,如果我的脚本的开头是这样的,

#!/usr/bin/env python3
#
# some comments here

然后pip3 install#!/usr/bin/X11/python3替换第一行,这在我的系统上恰好是完全错误的。但是,如果我的脚本的开头是这样的:

#!/usr/bin/env python3
# some comments here

pip3 install不同的(此时正确)路径#!/opt/local/bin/python3替换shebang行。

我的问题:基本上,为什么会发生这种情况

  1. 为什么脚本的第二行会改变行为?
  2. pip3 install如何选择使用哪种解释器?
  3. 为什么尝试使用/usr/bin/X11/python3(我的系统上不存在)?
  4. 如何更改行为或完全停止调整?

0 个答案:

没有答案