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

2024-01-19

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

具体来说,sqlite3 requires https://stackoverflow.com/a/23251896/336527使用环境变量来确定其临时文件位置。但如果我使用os.environ['SQLITE_TMPDIR'] = '.' before import sqlite3,没有达到预期的效果。为什么?


The sqlite3module 只是 SQLite C 库的包装器,因此它不会直接看到对os.environ.

但是,那文档 https://docs.python.org/3/library/os.html#os.environ says:

如果平台支持putenv() https://docs.python.org/3/library/os.html#os.putenv函数,此映射可用于修改环境以及查询环境。putenv() https://docs.python.org/3/library/os.html#os.putenv修改映射时会自动调用。

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

请注意 SQLite 读取不同的环境变量在 Unix-y 操作系统上 https://stackoverflow.com/a/23251896/336527 and 在 Windows 上 https://msdn.microsoft.com/en-us/library/windows/desktop/aa364992.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

os.environ 对 C 扩展模块的可见性 的相关文章

随机推荐