Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python os.environ对C扩展模块的可见性_Python_Python 3.x_Sqlite_Environment Variables - Fatal编程技术网

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

Python os.environ对C扩展模块的可见性,python,python-3.x,sqlite,environment-variables,Python,Python 3.x,Sqlite,Environment Variables,如果我使用os.environ更改环境变量,我随后导入的模块是否会看到该更改 具体来说,sqlite3使用环境变量来确定其临时文件位置。但是如果在导入sqlite3之前使用os.environ['SQLITE\u TMPDIR']='.,则不会产生预期效果。为什么?sqlite3模块只是SQLite C库的包装,因此它不会直接看到对os.environ所做的任何更改 然而,报告说: 如果平台支持此功能,则此映射可用于修改环境以及查询环境。将在修改映射时自动调用 因此,如果在您更改了os.envi

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


具体来说,
sqlite3
使用环境变量来确定其临时文件位置。但是如果在导入sqlite3之前使用
os.environ['SQLITE\u TMPDIR']='.
,则不会产生预期效果。为什么?

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

然而,报告说:

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

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


请注意,SQLite读取不同的环境变量和。

RTFM:os.environ:“此映射是在第一次导入操作系统模块时捕获的,通常是在Python启动期间,作为processing site.py的一部分。在此之后对环境所做的更改不会反映在os.environ中,直接修改os.environ所做的更改除外。“另请参阅os.putenv的文档,该文档具有一些与平台相关的功能。如果您误解了文档,那么阅读手册会更容易。@PaulCornelius。”。它说对环境的更改不会反映在
os.environ
中。我正试图做相反的事情:改变
os.environ
以改变环境。医生们对此只字不提。