如何使用 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'
我正在跨不同的 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'