簡體   English   中英

如何讓 os.environ 列出我系統的環境變量,而不是用戶?

[英]How do I get os.environ to list environment variables of my system, not a user?

對於上下文,我正在嘗試運行嘗試讀取環境變量並吐出錯誤的代碼:

_PySpin.SpinnakerException: Spinnaker: System instance cannot be acquired. Could not load producer. Make sure that the environment variable FLIR_GENTL64_CTI_VS140 exists, and points to the location of the file FLIR_GenTL_v140.cti [-1012]

因此,經過大量挖掘,我找到了文件所在的位置,然后進入 windows 系統屬性 -> 高級 -> 環境變量,令我驚訝的是,有一個變量FLIR_GENTL64_CTI_VS140並且它確實指向適當的文件。

在 python 中,如果我導入 os 並運行 os.environ,則會打印以下內容:

environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Kingdel\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'KINGDEL', 'COMSPEC': 'C:\\WINDOWS\\system32\\cmd.exe', 'CONDA_DEFAULT_ENV': 'PointLock_pyspin', 'CONDA_PREFIX': 'C:\\ProgramData\\Anaconda3\\envs\\PointLock_pyspin', 'CONDA_PROMPT_MODIFIER': '(PointLock_pyspin) ', 'CONDA_SHLVL': '1', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'FC2PATH': 'C:\\Program Files\\Point Grey Research\\FlyCapture2\\bin64', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\Kingdel', 'IDEA_INITIAL_DIRECTORY': 'C:\\Users\\Kingdel\\Desktop', 'LOCALAPPDATA': 'C:\\Users\\Kingdel\\AppData\\Local', 'LOGONSERVER': '\\\\KINGDEL', 'NIEXTCCOMPILERSUPP': 'C:\\Program Files (x86)\\National Instruments\\Shared\\ExternalCompilerSupport\\C\\', 'NUMBER_OF_PROCESSORS': '4', 'ONEDRIVE': 'C:\\Users\\Kingdel\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'C:\\ProgramData\\Anaconda3\\envs\\PointLock_pyspin;C:\\ProgramData\\Anaconda3\\envs\\PointLock_pyspin\\Library\\mingw-w64\\bin;C:\\ProgramData\\Anaconda3\\envs\\PointLock_pyspin\\Library\\usr\\bin;C:\\ProgramData\\Anaconda3\\envs\\PointLock_pyspin\\Library\\bin;C:\\ProgramData\\Anaconda3\\envs\\PointLock_pyspin\\Scripts;C:\\ProgramData\\Anaconda3\\envs\\PointLock_pyspin\\bin;C:\\ProgramData\\Anaconda3\\condabin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program Files (x86)\\IVI Foundation\\VISA\\WinNT\\Bin;C:\\Program Files\\IVI Foundation\\VISA\\Win64\\Bin;C:\\Program Files (x86)\\IVI Foundation\\VISA\\WinNT\\Bin;C:\\Program Files\\MATLAB\\R2012b\\runtime\\win64;C:\\Program Files\\MATLAB\\R2012b\\bin;C:\\Program Files\\Microsoft Windows Performance Toolkit;C:\\Program Files\\Git\\cmd;C:\\Program Files\\Point Grey Research\\FlyCapture2\\bin64;C:\\Program Files\\Point Grey Research\\FlyCapture2\\bin64\\vs2013;C:\\Program Files\\Point Grey Research\\FlyCapture2\\bin64\\vs2015;C:\\Users\\Kingdel\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\Kingdel\\AppData\\Local\\GitHubDesktop\\bin;C:\\Users\\Kingdel\\AppData\\Local\\Microsoft\\WindowsApps;.', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 58 Stepping 9, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '3a09', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PROMPT': '(PointLock_pyspin) $P$G', 'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules', 'PUBLIC': 'C:\\Users\\Public', 'PYCHARM_HOSTED': '1', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONPATH': 'C:\\Users\\Kingdel\\Documents\\GitHub\\spinnaker_python', 'PYTHONUNBUFFERED': '1', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\WINDOWS', 'TEMP': 'C:\\Users\\Kingdel\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\Kingdel\\AppData\\Local\\Temp', 'USERDOMAIN': 'KINGDEL', 'USERDOMAIN_ROAMINGPROFILE': 'KINGDEL', 'USERNAME': 'Kingdel', 'USERPROFILE': 'C:\\Users\\Kingdel', 'VS100COMNTOOLS': 'C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\Tools\\', 'VXIPNPPATH': 'C:\\Program Files (x86)\\IVI Foundation\\VISA\\', 'VXIPNPPATH64': 'C:\\Program Files\\IVI Foundation\\VISA\\', 'WINDIR': 'C:\\WINDOWS'})

無論如何,關鍵是它是一組不同於我在 windows 系統屬性 -> 高級 -> 環境變量中看到的變量:

[環境變量](https://i.stack.imgur.com/xRoAn.png)

此外,os.environ 打印的內容似乎也不是我當前用戶的用戶變量。

無論如何,我的主要問題當然是,我如何讓FLIR_GENTL64_CTI_VS140在我的 python 中顯示為環境變量,因為它是一個環境變量,至少在我的系統上是這樣?

我懷疑答案與 python os.environ['USERNAME'] being 'Kingdel' 有關,而 windows system Properties -> Advanced -> Environment Variables 下列出的環境變量是'SYSTEM' 這可能是因為 python 安裝在用戶 Kindel 而不是在任何用戶之上。 但是,我希望有一個不需要重新安裝 python 的解決方案。是否有 os.change_user 命令類型之類的? 或者也許我可以以某種方式或類似的方式將環境變量從我的系統克隆到適當的用戶?

謝謝!

我嘗試卸載我正在嘗試使用的 SDK(及其相關程序)並將其重新安裝到我的用戶上,而不是直接在 C 驅動器上,我認為這可能會自動為我的用戶創建正確的變量,但事實證明我不能在用戶目錄中安裝程序(可能是 windows,因為我主要是 Mac 用戶)。

我試圖找到一種方法來使用 os.setuid() 將用戶更改為 python,但我找到的解決方案使用的是 pwd package,但這是在 windows 上完成的; 所以,我不能那樣做,也沒有找到解決方法。

好了,問題解決了。 os.environ 現在打印出在 windows 系統屬性->高級->環境變量中找到的環境變量。

我只是猜測,但我認為重啟我的 windows 機器可以解決這個問題。 我刪除了我的 conda 環境。 我卸載了 Spinnaker SDK,然后重新安裝了 Spinnaker SDK——與最初安裝的位置相同。 然后,我再次從頭開始創建我的環境並遵循相同的安裝過程,除了我確實在我的路徑(在 windows 系統屬性->高級->環境變量中)添加了我在 conda 中的環境路徑,其中包含 python。

老實說,我不認為卸載/重新安裝或添加路徑有任何作用,因為同樣,問題是 os.environ 打印的環境變量與 windows 系統屬性->高級->環境變量中列出的不同,這看起來很奇怪。

名義上,我希望這與 os.environ 映射到我的環境變量時有關,根據文檔,這與我導入 os.environ 時有關。 顯然,每次運行我的代碼時,我都在重新運行該導入,但它沒有被更新。 懷疑這可能與我打開 IDE 時有關,我關閉並重新啟動了我的 IDE,但這沒有任何作用。 所以,我認為它在我重新啟動時已修復。 或者,卸載過程沒有從我的系統中刪除環境變量,這樣當我重新安裝所有東西時,包括我的新環境和 os package 在那個環境中,也就是 os 創建它的映射並且這次包括“新”我需要的環境變量。 我不完全確定。

我想如果嘗試使用 python spinnaker,安裝一次所有內容,如果遇到問題重新啟動,然后卸載所有內容並重新安裝。 順便說一句,在導入 PySpin 之前導入 numpy。 希望沒有更多的問題!

操作系統環境文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM