Наверняка вы замечали, что в Python есть удобная функция для получения переменной окружения
os.getenv(NAME)
И её "сестра" для создания или изменения переменных окружения
os.putenv(NAME, VALUE)
Но почему-то putenv() не работает как должно. Энвайромент не обновляется!
os.putenv('MYVAR', '1')
print(os.getenv('MYVAR'))
... и ничего 😴
Почему так?
На самом деле энвайромент обновляется, но это значение не добавляется в словарь os.environ.
Откройте исходник функции os.getenv(). Это просто шорткат для os.environ.get()
В то время как putenv() это built-in С-функция.
Словарь os.environ (или точней класс из MutableMapping) создаётся из энвайромента в момент инициализации. Функция putenv() самостоятельно его не изменяет.
В тоже время, когда вы создаёте или изменяете ключ в os.environ, автоматически вызывается putenv() в методе __setitem__().
То есть, технически putenv() всё делает верно, но в os.environ это не отражается. Можно проверить так:
>>> os.putenv('MYVAR', '123')
>>> os.system('python -c "import os;print(os.getenv(\'MYVAR\'))"')
123
Я объявил переменную в текущем процессе и вызвал дочерний процесс, который её унаследовал и получил в составе os.environ.
Аналогично при удалении переменной вызывается еще одна built-in функция unsetenv(), удаляющая переменную из системы.
Итого
▫️ Удобней всего явно обновлять переменные через os.environ
▫️ Есть способ неявно создать/удалить переменную через putenv/unsetenv, что не повлияет на os.environ но изменит энвайромент и передаст изменения сабпроцессам. Но так лучше не делать!
▫️os.environ это просто обертка для built-in функций putenv() и unsetenv().
#basic
#DOCK/USDT analysis -
#DOCK is in a downtrend, trading below the 200 EMA. The price has broken out of the previous support and shown an impulsive bearish move. Right now, the price is retesting the broken zone. It is expected to reverse from there and continue the bearish momentum. Wait for the break of the $0.02069 level to go short.
TF : 1h
Entry : $0.02069
Target : $0.01935
SL : $0.02153
#DOCK upcoming hot events👇
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Integrate Traceable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Delegatable Credentials
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Ethereum Bridge Audit
🆕New Dock (DOCK) event!
30 June 2023 (or earlier)
Wallet App Staking
🆕New Dock (DOCK) event!
30 September 2023 (or earlier)
Bridge with Ethereum
#DOCK upcoming hot events👇
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
White Label Mobile Wallet
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Credentials Builder
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
EVM & Native Chain Comm.
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
V2: Relay Service
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Private Delegatable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Integrate Traceable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Delegatable Credentials
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Ethereum Bridge Audit
#DOCK upcoming hot events👇
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
White Label Mobile Wallet
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Credentials Builder
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
EVM & Native Chain Comm.
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
V2: Relay Service
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Private Delegatable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Integrate Traceable Creds
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Delegatable Credentials
🆕 New Dock (DOCK) event!
31 March 2023 (or earlier)
Ethereum Bridge Audit
#DOCK upcoming Events 👇👇
🆕 New Dock (DOCK) event!
30 September 2022 (or earlier)
Wallet App V0.3
🆕 New Dock (DOCK) event!
30 September 2022 (or earlier)
Mobile App V0.4 Staking
🆕 New Dock (DOCK) event!
30 September 2022 (or earlier)
Relay Service
🆕 New Dock (DOCK) event!
30 September 2022 (or earlier)
DSL Integration
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Web Wallet
🆕 New Dock (DOCK) event!
31 December 2022 (or earlier)
Integrate Anonymous Creds