Невозможно сохранить переменную окружения в conda, заканчивающемся на '==' - PullRequest
0 голосов
/ 12 февраля 2020

Я обращаюсь к API-интерфейсу Coinbase PRO, и для этого нужны три вещи: ключ API publi c, секрет API и пароль API. Я могу успешно сохранить ключ и пароль, потому что они представляют собой только строки с символами алфавита c. Однако секрет API выглядит примерно так: «uoahdsgoaogdso ==» Похоже, что знаки равенства в конце не позволяют системе распознать переменную.

В python Я использую следующую команду для печати каждая переменная среды (замена ключа каждым параметром, указанным выше): print(os.getenv('key'))

Когда я запускаю вышеизложенное, я могу успешно напечатать ключ и пароль publi c, но когда я пытаюсь распечатать секрет API, он дает мне пустую строку. Любые мысли о том, почему он не сохранит строку, которая содержит ==

Here is a visual representation of the issue

Еще одно замечание: я использую Ubuntu, подсистему linux для windows

1 Ответ

0 голосов
/ 13 февраля 2020

В строке == нет ничего особенного в том, что касается переменных среды. Символ знака равенства ASCII ничем не отличается от любого другого печатного символа; например, буква ASCII u. Вы можете увидеть, что это так при простом эксперименте:

$ bash
==== Hello from .bashrc ====
bash-5.0$ export KEY=abc=
bash-5.0$ env | grep KEY
KEY=abc=
bash-5.0$ bash -c 'echo "|$KEY|"'
|abc=|
bash-5.0$

Конечные символы равенства являются особыми, однако в определенных контекстах c, таких как печатаемые ключи RSA в кодировке base64, где они используются для заполнения. обеспечить правильную строку base64. См., Например, Почему строка в кодировке base64 имеет знак = в конце .

Кроме того, под "conda" вы ссылаетесь на платформу Anaconda для Python численного анализа на основе? Если да, я озадачен вашим вопросом. Использование Anaconda для запуска программы Python не окажет абсолютно никакого влияния на поведение переменных среды.

...