[英]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.