5. 配置选项
布尔类型的值为 0, 1
配置选项存放在文件 .pyarmor/config 中
5.1. 工程域
查看工程域的所有选项和节,以及选项的当前值:
$ pyarmor env -p info
查看单个选项的值,例如:
$ pyarmor env -p get src
设置选项的值,例如:
$ pyarmor env -p set src "workspace/project/src"
选项 |
类型 |
说明 |
---|---|---|
src |
路径 |
绝对路径,工程搜索模块和包的路径 |
scripts |
文件列表 |
工程的脚本,可以为空,也可以是一个或者多个文件 脚本一般是不会被工程中其他脚本和模块导入,是直接被执行的文件 文件是相对于 src 的路径或者绝对路径,可以包含通配符,例如: foo.py
fib*.py
|
modules |
文件列表 |
工程的模块,可以为空,也可以是一个或者多个文件 文件是相对于 src 的路径或者绝对路径,可以包含通配符,例如: joker.py
card*.py
|
packages |
路径列表 |
工程的包,相对于 src 的路径或者绝对路径,可以有通配符 包的名称默认为最后一级的目录名称 如果不一致的话,使用后缀 @pkgname 指定包的名称 例如: lib/mypkg1
../tools/mypkg2
src@mypkg
|
excludes |
模式列表 |
搜索模块和包的时候排除列表中指定的文件或者路径 模式是 fnmatch 格式的字符串 默认情况下是匹配搜索目录下面的名称,不会匹配多级目录 如果仅在某一个包中排除,使用包名称前缀模式 pkgname:pattern 使用 : 开始的模式仅用于排除工程路径下面的文件和目录 例如,常见的排除模式: venv
__pycache__
test*.py
joker:data
:find.py
|
recursive |
布尔 |
递归搜索工程路径下的模块和包 |
pypaths |
列表 |
指定动态导入模块时候的额外路径,支持的格式: path
path,path
modname::path,path
主要用于重构的时候需要导入基类,以及获取 wildcard 导入的名称: import a
from b import *
class C(a.T):
pass
|
5.1.1. rft
显示节 rft 中所有选项和选项的设置:
$ pyarmor env -p info rft
查看单个选项的值,例如:
$ pyarmor env -p get rft:argument_mode
设置选项的值,例如:
$ pyarmor env -p set rft:argument_mode 1
选项 |
类型 |
默认值 |
说明 |
---|---|---|---|
remove_assert |
布尔 |
0 |
是否删除脚本中 assert 语句 |
remove_docstr |
布尔 |
0 |
是否删除脚本中所有 docstring |
builtin_mode |
布尔 |
0 |
是否重命名内置名称,例如 print 等 |
argument_mode |
枚举 |
3 |
重命名参数的方式,可用值
|
export_mode |
布尔 |
0 |
是否输出模块属性 __all__ 中列出的名称 输出的名称在重构过程中不会被重命名 如果输出的名称是类,那么类的方法和属性也不会重命名 如果输出的名称是函数,那么函数的参数也不会重命名 模块 如果是导入的名称,在被导入的模块中也不会重命名该名称 |
exclude_names |
模式列表 |
列出不能重命名的类,函数,方法和属性的名称 支持的格式是 fnmatch 的模式,例如: "inc"
"dir*"
参数和局部变量总是会被重命名,这里列出的名称对参数和局部变量不起作用 |
|
exclude_funcs |
模式列表 |
这里面列出的函数名称,对应的参数都不进行重命名: "func"
"modname::func"
"modname::cls.method"
|
|
attr_rules |
模式列表 |
处理未知类型的属性的时候,自定义重命名规则 一个规则占一行,支持如下格式: modname::scope:a.b.c
!modname::scope:a.b.c
modname::scope:a.b.c *.?.?
第一种格式所有的属性都重命名,第二种格式正好相反,所有的属性都不重命名 第三种格式是指定需要重命名的属性, ? 对应的属性重命名 |
|
call_rules |
模式列表 |
处理函数调用的时候,重命名匹配函数的关键字参数 支持的格式为函数名称,或者指定模块内的函数,支持通配符,例如: foo
visit*
modname::foo
pkg.mod::foo*
|
|
extra_builtins |
名称列表 |
除了 builtins 模块之外,需要作为内置名称进行处理的额外名称 支持的格式为空格分开的名称,可以多行 |
|
external_types |
外部类列表 |
处理未知类型的属性的时候,自动排除外部类的属性,支持的格式: modname
modname::*
modname::Cls
modname::Cls*
只有模块名称则模块中所有的类的属性都会被排除,第一行和第二行是等价的 |
|
external_attrs |
外部属性表 |
处理未知类型的属性的时候,自动排除这里列出的属性 支持的格式为空格分开的名称,可以多行,不支持通配符 |