使用FastAPI连接PostgreSQL时Anaconda环境变量编码异常咨询
Anaconda环境变量中%40被替换的解决办法
问题本质:Anaconda的
conda env config vars set命令会把单个%当作变量替换的前缀,输入%40时,它会尝试查找名为40的系统/conda变量,找不到就会出现异常替换(比如你遇到的set0),这是shell变量解析和conda自身处理共同导致的。解决方法1:转义%符号
使用conda命令设置环境变量时,把单个%改成两个%%来转义:conda env config vars set DB_URL="postgresql://user:pass%%40your-host:5432/your-db"设置完成后重启conda环境,环境变量里的
%%40会被正确解析为%40。解决方法2:直接使用@符号(更简单)
如果数据库密码里没有@符号,完全不需要对URL里的@进行编码,直接写原始字符即可,用引号包裹避免shell解析问题:conda env config vars set DB_URL="postgresql://user:pass@your-host:5432/your-db"只有当密码本身包含
@时,才需要用%40编码,这时候再用方法1的转义方式。补充说明
Anaconda的环境变量处理逻辑基本继承自你使用的终端shell:- Windows CMD中,
%是变量标记,转义用%%; - Linux/macOS的bash/zsh中,用单引号包裹变量值就能避免
%被解析,或者用\%转义。
- Windows CMD中,
内容的提问来源于stack exchange,提问作者Loson
相关产品推荐
相关产品推荐

