首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用distutils处理配置文件以尊重unixen的FHS?

在处理配置文件时,遵循Unixen的文件系统层次结构(FHS)是一种很好的做法。Distutils是Python的一个标准库,用于构建和发布Python模块。要使用distutils处理配置文件并尊重Unixen的FHS,您可以遵循以下步骤:

  1. 确定配置文件的位置:根据FHS,配置文件应该位于/etc目录下。在这个目录中,您可以为您的应用程序创建一个子目录,例如/etc/myapp。在这个子目录中,您可以将配置文件命名为config.ini
  2. 在distutils中设置数据文件:在setup.py脚本中,使用data_files参数指定配置文件的位置。例如:
代码语言:python
代码运行次数:0
复制
from distutils.core import setup

setup(
    name='myapp',
    version='1.0',
    packages=['myapp'],
    data_files=[('/etc/myapp', ['config.ini'])],
)

这将在安装过程中将config.ini文件复制到/etc/myapp目录中。

  1. 在代码中读取配置文件:使用Python的configparser库读取配置文件。例如:
代码语言:python
代码运行次数:0
复制
import configparser

config = configparser.ConfigParser()
config.read('/etc/myapp/config.ini')

# 读取配置项
my_setting = config.get('section', 'option')
  1. 在安装时创建符号链接:为了让应用程序能够在运行时找到配置文件,您可以在安装时创建一个符号链接。在setup.py中添加以下代码:
代码语言:python
代码运行次数:0
复制
import os
import sys
from distutils.sysconfig import get_python_lib

if sys.platform == 'linux':
    link_path = os.path.join(get_python_lib(), 'myapp', 'config.ini')
    target_path = '/etc/myapp/config.ini'
    os.symlink(target_path, link_path)

这将在Python库的myapp目录中创建一个指向/etc/myapp/config.ini的符号链接。这样,在运行时,应用程序可以通过import myapp.config找到配置文件。

遵循这些步骤,您可以使用distutils处理配置文件,同时尊重Unixen的FHS。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Linux文件系统应用---系统数据备份和迁移(用户角度)

最小代价实现文件备份和迁移。...所以完全有必要对FHS相关规定进行研究,这样有如下好处: 在使用或者开发Linux文件系统时,能了解Linux设计标准,并在使用过程中尽量遵守准则 在接触并使用不同Linux分支时,即使Linux分支有万千...和桌面应用程序相关程序配置文件 . ...,关于用户应用程序配置文件目录有两个地方: /home/xxx 目录下点号开头隐藏文件 /home/xxx/.config 目录下文件 用户目录下隐藏配置文件,前端已经介绍,在 .config...关于迁移到新系统后,应用程序如何迁移,本文提供是直接文件级别的复制,还有一种自动化方法就是基于命令行处理文件执行安装,如果有比较快速网络,推荐执行命令行自动化安装(后面会奉上文章)。

3.1K50

Linux目录结构

简介 由于 Linux 系统是开源,存在众多不同发行版,为了防止不同 Linux 发行版系统目录结构大相径庭,以至于用户从一个发行版迁移到别的发行版后不会使用FHS(Filesystem Hierarchy...FHS 标准 Centos 7.x 为例,其文件系统架构如下图所示: image.png 2.1 目录形态 FHS 依据文件系统使用频繁与否和是否允许使用者随意更改,将目录定义为四种交互作用形态...,具体举例如下表格所示: image.png 可分享:可以分享给其它系统挂载使用目录,所以包括可执行文件与使用邮件等数据,是能够分享给网络上其它主机挂载使用目录。...比如函式库、文件说明文档、系统管理员所管理主机服务配置文件等等。 可变:经常改变数据,比如登录文件、一般用户可自行收受新闻群组等。...因此根目录下与开机过程有关目录,就不能够与根目录放到不同分区中。以下目录不可与根目录分开: /etc:存放配置文件。 /bin:存放重要执行文件。 /dev:存放所需要设备文件。

7.4K20
  • PythonDistutils模块

    因为Distutils包含多个模块,这些模块分成了两个包;如果列出所有模块的话则是冗长且难以维护。注意,在setup脚本中路径必须Unix形式来书写,也就是由”/”分割。...2.1、列出整个包Setup函数packages参数是一个列表,其中包含了Distutils需要处理(构建、发布、安装等)所有包。...(C++源码文件扩展名可以是.cc和.cpp,Unix和Windows编译器都支持)。不过还可以在列表中包含SWIG接口文件(.i文件),build_ext命令知道如何处理SWIG接口文件。...在构建时,选项处理顺序是setup脚本、配置文件,命令行。...command就是Distutils命令(比如build_py,install等),option就是命令支持选项。配置文件空行、注释(’#’开头,直到行尾)会被忽略。

    5.7K40

    linux学习笔记03文件管理篇

    为显示文件大小,大 S 为按文件大小排序,若需要知道如何按其它方式排序,请使用“man”命令查询。...FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域用途、所需要最小构成文件和目录同时还给出了例外处理与矛盾处理...FHS标准文档: http://refspecs.linuxfoundation.org/FHS_2.3/fhs-2.3.pdf 如果你觉得看这个不明白,那么可以试试最真实最直观方式,执行如下命令:...$ tree / 可分享(shareable) 不可分享(unshareable) 不可变(static) /usr (软件放置处) /etc(配置文件) /opt(第三方软件) /boot...$ cd /home/shiyanlou/ 使用通配符批量创建 5 个文件: $ touch file{1..5}.txt 批量将这 5 个后缀为 .txt 文本文件重命名为 .c 为后缀文件:

    52020

    Linux目录结构和文件属性管理

    一、FHS介绍 Filesystem Hierarchy Standard(文件系统层次化标准)缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘文件目录,FHS采用树形结构组织文件...FHS定义了系统中每个区域用途、所需要最小构成文件和目录,同时还给出了例外处理与矛盾处理。.../etc– 配置文件 包含所有程序所需要配置文件,也包含用于启动/停止单个程序起动和关闭shell脚本。 /dev-设备文件 包含设备文件,包括终端设备、USB或连接到系统任何设备,如网卡等。...六、绝对路径和相对路径 linux路径书写方式有两种: 绝对路径:路径写法一定是由根目录 / 写起根目录为起点; 相对路径:路径写法不是由根目录 / 写起,不以根目录为起点。...至于优缺点方面没有绝对答案,不同情况使用不同路径罢了,两种路径出现只是因为参照物不同而已。

    1.2K20

    Lnux系统主目录结构及其作用

    Linux和UNIX文件系统是一个“/ “为根阶层式树状文件结构,/ 因此被称为根目录。所有的文件和目录都置于根目录/ 之下。根目录/下面有/bin,/home,/usr等子目录。...2001年3月,FHS 2.2版本发布,2004年1月29日发行了最新版本2.3。 FHS标准使得众多Linux发布包有了可以遵循标准,使得软件和用户可以预测已经安装了文件和目录位置。...它定义了如下内容 定义了文件系统中每个区域用途 定义了所需要最小构成文件和目录 给出了例外处理和矛盾特殊例子 FHS实际上仅是规范在根目录(/)下面各个主要目录应该放什么样文件。...,目录名称是不同. / 根目录 /bin 一般用户使用命令 /boot 放置内核及LILO、GRUB等导引程序(bootloader)文件,用于启动。.../etc 系统所有配置文件都存放在此目录中。 /home 用户空间,所有的用户都是用此空间。 /lib 共享连接库,如C库和C编译器等等。

    53920

    Linux笔记01

    一、热键 a 【tab】【tab】 显示a开头所有命令 【CTRL】+ c 停止运行命名 【CTRL】 +d 相当于exit 二、帮助文档 命令 --help man 命令 info 命令 三、...要求必须存放目录 /bin 系统执行文件 /boot 启动使用文件 /dev 设备和接口设备文件 /etc 系统主要配置文件 /lib 系统数据库 /media 媒体 /mnt.../sys虚拟文件系统不占硬盘空间 FHS要求必须存放目录 /usr/bin/ 一般用户能使用命令 /usr/lib/与lib功能相同 /usr/local/系统管理员自己下载软件 /usr/...与时区有关时区文件 FHS建议存放地方 /usr/games/与游戏相关 /usr/include/ c/c++程序头文件 /usr/libexec/ 某些不被一般用户常用执行文件和脚本 /...usr/lib/ 同/lib /usr/src/ 一般源代码建议放置 FHS要求必须存放目录 /var/cache/ 应用运行过程中产生缓存 /var/lib/ 程序在运行中需要数据库

    32930

    NumPy 1.26 中文文档(五十三)

    其他“结构性”缺陷,如损坏链接也优先处理。 所有这些修复都易于确认并放置。 如果你知道如何做,你可以提交一个拉取请求(PR)来修复,否则请提交一个问题。...其他“结构性”缺陷(例如损坏链接)也会被优先处理。所有这些修复都很容易确认并实施。如果您知道如何操作,请提交 pull 请求 (PR)进行修正;否则,请打开一个问题。...如果您想添加头文件所在路径中没有配置文件,您需要创建一个新配置文件。 子配置文件可以接受Doxygen任何配置选项,但不会覆盖或重新初始化任何配置选项,只使用连接操作符“+=”。...BLAS 并默认优化 f2py 现在处理零维数组 numpy.distutils 现在支持同时使用 MSVC 和 mingw64-gfortran np.linalg.pinv 现在适用于堆叠矩阵...np.trace现在尊重数组子类 np.dot现在引发TypeError,而不是ValueError linalg.norm返回类型更改 弃用项 Fortran 顺序数组视图

    11010

    linux每日命令(24):Linux 目录结构

    根据FHS(http://www.pathname.com/fhs/)官方文件指出, 他们主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立软件开发商、操作系统制作者...事实上,FHS是根据过去经验一直再持续改版FHS依据文件系统使用频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用形态,用表格来说有点像底下这样: 可分享(shareable.../usr 目录 意义与内容 依据FHS基本定义,/usr里面放置数据属于可分享与不可变动(shareable, static), 如果你知道如何透过网络进行分区挂载,那么/usr确实可以分享给局域网络内其他主机来使用...这些数据被使用后通常都会被删除 /var/spool/cron/root 定时器配置文件目录,默认按用户命名 /var/spool/clientmqueue/ 当邮件服务未开启时,所有应发给系统管理员邮件都将堆放在此.../var/lock 锁定文件.许多程序遵循在/var/lock 中产生一个锁定文件约定,支持他们正在使用某个特定设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.

    1.6K21

    Linux 文件权限和目录配置

    i-node中,不过我们使用目录树却是使用文件名来记录,因此每个文件名就会连接到一个i-node。...2、如何改变文件权限和属性 chgrp  :  改变文件所属用户组 chown :  改变文件所有者 chmod:  改变文件权限 2.1、改变文件所属用户组...以下是几种常用扩展名: *.sh:脚本或批处理文件。 *Z、*.tar、*.tar.gz、*.zip、*.tgz:经过打包压缩文件。...如果每个人都用自己想法来配置文件放置目录,那么将可能造成很多管理上困扰。后来就有了所谓Filesystem Hierarchy Standard (FHS) 标准了。...FHS依据文件系统使用频繁与否和是否允许用户随意改动,而将目录定义为四种交互作用形态。

    3.5K20

    Linux文件系统目录结构详解

    事实上,FHS是根据过去经验一直再持续改版FHS依据文件系统使用频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用形态,用表格来说有点像底下这样: 可分享(shareable.../usr 意义与内容 依据FHS基本定义,/usr里面放置数据属于可分享与不可变动(shareable, static), 如果你知道如何透过网络进行分区挂载(例如在服务器篇会谈到..., 就可能产生一些错误状况,因此就得要将该装置上锁(lock),确保该装置只会给单一软件所使用。...查阅此文件,可了解系统是如何启动!.../var/lock:锁定文件.许多程序遵循在/var/lock 中产生一个锁定文件约定,支持他们正在使用某个特定设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.

    2.9K11

    Python3 setup.py编写详解

    一、distutils工具介绍 1. 功能 distutils可以用来在Python环境中构建和安装额外模块。...三、如何使用setuptools工具 setuptools工具使用重点在于setup.py文件编写。 1....如何编写setup.py文件 1.1 setup.py参数介绍 name : 打包起来文件名 version : 版本号,添加为打包文件后缀名 author : 作者 author_email...: include xxx/xxx/xxx/*.ini */(所有.ini结尾文件,也可以直接指定文件名) license : 支持开源协议 description : 对项目简短一个形容 ext_modules...ext_package : 定义extension相对路径 requires : 定义依赖哪些模块 provides : 定义可以为哪些模块提供依赖 data_files : 指定其他一些文件(如配置文件

    3K20

    Linux文件权限与目录管理

    PS:如果当初使用中文安装Linux的话,显示完整日期应该会中文显示,但中文无法在命令窗口中显示,此时就会出现乱码,此时只能设置一下,让日期用英文显示:LANG=en_US 第七列:文件名 Linux...二进制文件 Linux中可执行文件(scripts和文字批处理文件不算)。 刚才cat就是二进制文件。 3....数据格式文件 就是程序运行时会被读取具有特定格式文件,如配置文件。...FHS对目录规范四种类型: 可分享目录 表示这个目录可以分享给网络上其他主机挂载使用。...FHS建议根目录下必须要有这些目录: - /bin:在bin目录下命令可以被所有账号使用,一般命令是:cat、chmod、chown、date、mv、mkdir、cp、bash - /boot

    5.6K80

    Linux 系统目录和结构

    根据FHS(http://www.pathname.com/fhs/)官方文件指出, 他们主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立软件开发商、操作系统制作者...、以及想要维护系统用户,都能够遵循FHS标准。...绿色文件:可执行文件,可执行程序 红色文件:压缩文件或者包文件 蓝色文件:目录 白色文件:普通文件,如文本文件,配置文件,源码文件等 浅蓝色文件:链接文件,主要是使用ln命令建立文件 红色闪烁:表示链接文件有问题...这些包括终端设备、USB或连接到系统任何设备。例如:/dev/tty1、/dev/usbmon0 5)/etc 存放系统配置文件; 包含所有程序所需配置文件。...这是一个虚拟文件系统,包含有关正在运行进程信息。例如:/proc/{pid}目录中包含与特定pid相关信息。 这是一个虚拟文件系统,系统资源文本信息形式存在。

    1.4K30

    setup.py即将下岗,PEP 518 说明继任者

    ,应该如何指定其依赖关系。...本规范引入了一个新配置文件,用于指定软件包构建依赖关系(假定今后配置会使用相同配置文件作为参考)。...distutils是Python标准库一部分,所以,使用一个可执行文件来指定distutils构建条件是没有问题。...*命名空间中名称,确保不同项目不会尝试使用相同子表产生冲突。 我们规则是:当且仅当一个项目拥有Cheeseshop / PyPI中$NAME条目时,它才可以使用子表tool.$NAME。...这就使得有人可能会使用YAML功能与一个解析器一起工作,而不是另一个解析器。有人建议在一个子集上进行标准化,但这基本上意味着要创建一个特定于该文件新标准,这个标准是不容易长期处理

    1.9K70

    Linux之目录结构详解

    根据FHS(http://www.pathname.com/fhs/)官方文件指出, 他们主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下, 所以他们希望独立软件开发商、操作系统制作者...事实上,FHS是根据过去经验一直再持续改版FHS依据文件系统使用频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用形态。...用表格来说有点像底下这样: 可分享(shareable)不可分享(unshareable)不变(static)/usr (软件放置处)/etc (配置文件)/opt (第三方协力软件)/boot.../usr 意义与内容: 依据FHS基本定义,/usr里面放置数据属于可分享与不可变动(shareable, static), 如果你知道如何透过网络进行分区挂载(例如在服务器篇会谈到NFS..., 就可能产生一些错误状况,因此就得要将该装置上锁(lock),确保该装置只会给单一软件所使用

    1.7K52

    长文干货:文件和目录属性相关 Linux 命令详解,收藏~

    事实上,FHS是根据过去经验一直再持续改版FHS依据文件系统使用频繁与否与是否允许使用者随意更动, 而将目录定义成为四种交互作用形态,用表格来说有点像底下这样: 可分享(shareable.../usr 意义与内容: 依据FHS基本定义,/usr里面放置数据属于可分享与不可变动(shareable, static), 如果你知道如何透过网络进行分区挂载(例如在服务器篇会谈到NFS..., 就可能产生一些错误状况,因此就得要将该装置上锁(lock),确保该装置只会给单一软件所使用。...Linux当中可执行文件(scripts, 文字型批处理文件不算)就是这种格式文件。 刚刚使用命令cat就是一个binary file。 3>....底下有数种常用扩展名: *.sh : 脚本或批处理文件 (scripts),因为批处理文件为使用shell写成,所以扩展名就编成 .sh *Z, *.tar, *.tar.gz, *.zip, *.

    60530

    linux目录配置(实例说明)

    放置装载开机会使用到文件目录,包括Linux内核文件以及开机所需配置文件等。Linux kernel 常用文件名为 vmlinuz 。...放置系统主要配置文件目录,包括用户账号密码文件(/etc/passwd存放账号,/etc/shadow存放账号密码信 息)、各种服务起始文件等。...FHS建议不要放置可执行文件在该目录下。 /home ? 放置系统默认用户主文件夹目录,当创建新用户时,默认用户主文件夹都放置在该目录下。.../usr里面放置数据属于可分享和不可变FHS建议开发者应将他们数据合理地放置到该目录下子目录下。...因此需要将该设备上锁,确保该文件只会被单一程序使用 /var/log——放置登录文件 /var/run——某些程序或者服务启动后,会将他们PID放置在该目录下

    1.2K10
    领券