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

2024-05-22 01:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在不同的Linux和BSD发行版上移植python库 此库是使用setuptools打包的。你知道吗

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

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

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

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

所以我想知道是否有一种方法可以在设置.py修复路径(用于前缀和配置文件),以便使我的包可移植。你知道吗

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

%%PREFIX%%/bin/my-cmd

并替换中的模式%%PREFIX%%设置.py就在它安装包之前,这可能吗?你知道吗

谢谢


Tags: 文件代码py路径cmdconfigbinmy
2条回答

试试这个也许会对你有帮助。__file__将获取当前位置。你知道吗

import os

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

为了在构建时解决这个问题,我们可以在设置.py,遍历项目中的所有python文件并替换模式,但我找到的最佳解决方案是在运行时使用全局变量修复路径:

在我的__init__.py中,我有:

import platform

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

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

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

相关问题 更多 >