【问题标题】:How does one get python setup.py install to use relative paths when referring to python installation?在提到 python 安装时,如何让 python setup.py install 使用相对路径?
【发布时间】:2016-11-30 04:29:31
【问题描述】:

我想使用 python setup.py install 将 Spyder 安装到 /AppDir/usr(即,这是我指定给 python setup.py install--prefix)并且我希望即使我移动了 Spyder 安装也能正常工作/AppDir 目录。目前情况并非如此,因为当我 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 文件)使其运行)将不起作用!

【问题讨论】:

标签: python relative-path setup.py


【解决方案1】:

您从./spyder 中的shebang 得到的错误结果。 Shebangs must use absolute paths,因此当您使用解释器移动文件夹时,它无法自动更改。事实上,Filesystem Hierarchy Standard 背后的想法是让逻辑文件位置保持不变和可预测,而不管它们的物理位置如何(特别是对于 Python,例如.pyc 文件在其中具有绝对路径,因此它们可能必须重新生成一旦安装被移动)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2010-10-23
    • 2023-03-14
    • 2011-05-23
    • 2016-02-27
    • 1970-01-01
    • 2017-11-30
    相关资源
    最近更新 更多