python setup.py install 指的是 python installation 时如何使用相对路径?

How does one get python setup.py install to use relative paths when referring to python installation?

我想使用 python setup.py install 将 Spyder 安装到 /AppDir/usr(即,这是我指定给 python setup.py install--prefix)并且我想要这个即使我移动 /AppDir 目录,Spyder 的安装也能正常工作。目前情况并非如此,因为当我 cd 到移动的 /AppDir/usr/bin(不再位于 /AppDir/usr/bin 而是在 ~/GitHub/mine/packaging/AppImages/recipes/spyder/AppDir/usr/bin,因为我移动了它)目录和 运行 ./spyder 从里面我得到错误:

zsh: ./spyder: bad interpreter: /AppDir/usr/bin/python: no such file or directory

为了使 Spyder 的安装可移植,我相信我需要 /AppDir/usr 中的 Spyder 安装文件来调用相对文件路径而不是绝对文件路径(所以不是调用解释器 /AppDir/usr/bin/python 它会调用 ./python)。有没有办法做到这一点?

编辑:我计划从这个 AppDir 创建一个 AppImage(一种交叉分发包格式),所以符号链接将不起作用!由于此 AppImage 旨在供其他人下载并供其他人使用,因此本地解决方案(例如,通过像我的 ~/.zshrc 文件一样修改我的本地系统来使其成为 运行)将不起作用!

您从 shebang in ./spyder. Shebangs must use absolute paths, so it cannot change automagically when you move the folder with the interpreter. In fact, the very idea behind the Filesystem Hierarchy Standard 得到的结果的错误是逻辑文件位置保持不变和可预测,无论它们的物理位置如何(特别是 Python,例如 .pyc 文件内部有绝对路径,因此一旦安装被移动,它们可能必须重新生成)。

最简单的解决方法是在使用该特定 Python 安装的所有脚本中手动搜索和替换 shebang。参见例如linux - How / Is it possible to install python in a portable way? - Unix & Linux Stack Exchange and Creating a Portable Python (local install) for Linux 其他选项。