Conda setuptools install 将 shebangs 更改为默认 python 安装
Conda setuptools install changes shebangs to default python install
我遇到一个问题,即通过 setuptools 安装到 python anaconda 的软件包将 shebangs 重写到错误的位置。
我已经安装了 python anaconda 和 setuptools 软件包。我已经验证 python 可执行文件指向 anaconda 可执行文件
grant@DevBox2:/opt/content-analysis$ which python
/opt/anaconda2/bin/python
我需要为我的 anaconda 安装自定义包 python。它只能通过安装工具安装。它包括一个命令行可执行文件,顶部带有以下 shebang:
#!/usr/bin/env python
使用以下命令安装包后:
sudo python setup.py install --prefix=/opt/anaconda2
可执行文件 (content_analysis) 出现在路径可到达的位置。但是顶部的 shebang 已替换为机器上默认 python 安装的硬编码位置。
grant@DevBox2:/opt/content-analysis$ which content_analysis
/opt/anaconda2/bin/content_analysis
grant@DevBox2:/opt/content-analysis$ sed -n 1,2p /opt/anaconda2/bin/content_analysis
#!/usr/local/bin/python
我已阅读以下 post here 关于 setuptools 覆盖 shebang 的内容。 post 建议 $PATH
中第一个的 python 可执行文件应该 是 setuptools 用来替换 shebang 的可执行文件。然而,这对我来说似乎并非如此。
注意:我无法将 python 可执行文件硬编码到我的 python setup.py build
命令中。我需要一个部署解决方案,该解决方案可以在任何已安装 conda 作为 $PATH
中的第一个 python 的环境中运行
我终于弄清楚是什么导致我的所有问题都得到 python 并且依赖项已正确安装:
每当在可执行文件之前调用 sudo
时,在 Debian 中 $PATH 变量会自动更改为安全路径查找。这是一个演示:
grant@DevBox2:/opt/content-analysis$ sudo sh
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
对比
grant@DevBox2:/opt/content-analysis$ sh
$ echo $PATH
/opt/anaconda2/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
因此,当在 sudo python setup.py
之前调用 sudo 时,安装将恢复为默认设置 python。
见 this post 讨论
我遇到一个问题,即通过 setuptools 安装到 python anaconda 的软件包将 shebangs 重写到错误的位置。
我已经安装了 python anaconda 和 setuptools 软件包。我已经验证 python 可执行文件指向 anaconda 可执行文件
grant@DevBox2:/opt/content-analysis$ which python
/opt/anaconda2/bin/python
我需要为我的 anaconda 安装自定义包 python。它只能通过安装工具安装。它包括一个命令行可执行文件,顶部带有以下 shebang:
#!/usr/bin/env python
使用以下命令安装包后:
sudo python setup.py install --prefix=/opt/anaconda2
可执行文件 (content_analysis) 出现在路径可到达的位置。但是顶部的 shebang 已替换为机器上默认 python 安装的硬编码位置。
grant@DevBox2:/opt/content-analysis$ which content_analysis
/opt/anaconda2/bin/content_analysis
grant@DevBox2:/opt/content-analysis$ sed -n 1,2p /opt/anaconda2/bin/content_analysis
#!/usr/local/bin/python
我已阅读以下 post here 关于 setuptools 覆盖 shebang 的内容。 post 建议 $PATH
中第一个的 python 可执行文件应该 是 setuptools 用来替换 shebang 的可执行文件。然而,这对我来说似乎并非如此。
注意:我无法将 python 可执行文件硬编码到我的 python setup.py build
命令中。我需要一个部署解决方案,该解决方案可以在任何已安装 conda 作为 $PATH
我终于弄清楚是什么导致我的所有问题都得到 python 并且依赖项已正确安装:
每当在可执行文件之前调用 sudo
时,在 Debian 中 $PATH 变量会自动更改为安全路径查找。这是一个演示:
grant@DevBox2:/opt/content-analysis$ sudo sh
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
对比
grant@DevBox2:/opt/content-analysis$ sh
$ echo $PATH
/opt/anaconda2/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
因此,当在 sudo python setup.py
之前调用 sudo 时,安装将恢复为默认设置 python。
见 this post 讨论