繁体   English   中英

如何使用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'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM