如何使用 setuptools 修复 python 代码中的路径来构建可移植包?

How to fix paths in the python code using setuptools to build a portable package?

我正在跨不同的 Linux 和 BSD 发行版移植 python 库 这个库是使用 setuptools 打包的。

问题是代码引用了系统中的其他文件,例如:

/bin/my-cmd
/etc/default/my-config.cfg

但根据 Linux 或 BSD 发行版,路径不同,例如:

/usr/local/bin/my-cmd
/etc/my-config.cfg

所以我想知道是否有办法在 setup.py 中编写预安装脚本来修复路径(用于前缀和配置文件),这样我就可以使我的包可移植。

我希望能够在源代码中编写一些模式,例如:

%%PREFIX%%/bin/my-cmd

并在安装包之前替换 setup.py 中的模式 %%PREFIX%%,这可能吗?

谢谢

试试这个可能对你有帮助。 __file__ 将获取当前位置。

import os

os.path.join(os.path.dirname(__file__), 'bin/my-cmd')

要在构建时修复此问题,我们可以在 setup.py 中添加自定义构建步骤,遍历项目中的所有 python 文件并替换模式,但我找到的最佳解决方案是使用全局变量在运行时修复路径:

在我的 __init__.py 我有:

import platform

if platform.system() == 'FreeBSD':
    PREFIX = '/usr/local'
else:
    PREFIX = ''

然后我可以使用以下方式引用文件位置:

my_cmd_path = PREFIX + '/bin/my-cmd'