gpt4 book ai didi

python - Conda setuptools install 将 shebangs 更改为默认的 python 安装

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:34 27 4
gpt4 key购买 nike

我遇到一个问题,即通过 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

我已阅读以下帖子 here关于 setuptools 覆盖 shebangs。该帖子建议 $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供讨论

关于python - Conda setuptools install 将 shebangs 更改为默认的 python 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39255544/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com