os.environ对C扩展模块的可见性

时间:2016-04-20 01:26:07

标签: python python-3.x sqlite environment-variables

如果我使用os.environ更改环境变量,我之后导入的模块是否会看到更改?

具体而言,sqlite3 requires使用环境变量来确定其临时文件位置。但如果我在os.environ['SQLITE_TMPDIR'] = '.'之前使用import sqlite3,则效果不佳。为什么呢?

1 个答案:

答案 0 :(得分:2)

sqlite3模块只是SQLite C库的包装器,因此它不会直接看到对os.environ所做的任何更改。

然而,documentation说:

  

如果平台支持putenv()功能,则此映射可用于修改环境以及查询环境。修改映射时将自动调用putenv()

因此,如果在您更改os.environ后初始化SQLite库,它将会看到更改。

请注意,SQLite会读取不同的环境变量on Unix-y OSeson Windows