Почему мои переменные среды не совпадают, когда Pycharm выполняет код?Python

Программы на Python
Ответить
Anonymous
 Почему мои переменные среды не совпадают, когда Pycharm выполняет код?

Сообщение Anonymous »

СРЕДА:
Mac OS Catalina 10.15.7
Python 3.7.13
ПРОБЛЕМА:
Моему коду Python необходимо выполнить некоторые команды терминала. Но я получаю сообщение об ошибке: «команда не найдена».
Поэтому я протестировал те же самые команды из «Терминала», и все сработало отлично.
Поэтому я сравниваю переменные среды, загруженные с помощью моего терминала, и переменные, загруженные с помощью моего скрипта Python. В результате они не совпадают.
Здесь вы можете увидеть содержимое моего файла .zshrc:

Код: Выделить всё

export PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home:/Users/alisa/Android/cmdline-tools/latest/bin:/Users/alisa/Android/platform-tools:/bin:/opt/local/bin:/sbin:/usr/local/bin:/usr/sbin/:/usr/bin:/usr/local/opt/qt@/bin/:/usr/local/opt/qt@6/bin/:/Users/alisa/.wdm/drivers/geckodriver/macos/v0.30.0:/Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home:/usr/local/Cellar/python@3.9/:/usr/local/Cellar/python@3.9/3.9.12_1/bin/:/usr/local/lib/python3.9/site-packages:/usr/local/Cellar/python@3.9/3.9.12_1/Frameworks/Python.framework/Versions/3.9/bin/"
export ANDROID_HOME="/Users/alisa/Android"
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home"
DYLD_LIBRARY_PATH="/usr/local/lib/python3.9/site-packages/PySide2:/usr/local/lib/python3.9/site-packages/PyQt5/:/Library/Java/JavaVirtualMachines/jdk-15.0.2.jdk/Contents/Home"
export DYLD_LIBRARY_PATH
export DYLD_PRINT_LIBRARIES=1
set QT_DEBUG_PLUGINS=1
export REQUESTS_CA_BUNDLE="$HOME/.mac-ca-roots"
export LDFLAGS="-L$(brew --prefix xz)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib"
export CPPFLAGS="-I$(brew --prefix xz)/include -I$(brew --prefix readline)/include -I$(brew --prefix zlib)/include -I$(xcrun --show-sdk-path)/usr/include"
alias python3=/usr/local/opt/python@3.7/bin/python3
APPDATA="/users/alisa"
export APPDATA

TESSDATA_PREFIX="/opt/local/share/tessdata"
export TESSDATA_PREFIX
export PATH="/usr/local/sbin:$PATH"
alias python3="/usr/local/Cellar/python@3.9/3.9.12_1/Frameworks/Python.framework/Versions/3.9/bin/python3.9"
export PYTHONPATH=/usr/local/lib/python3.9/site-packages/
А вот значения переменных среды, загруженных моим кодом Python:

Код: Выделить всё

HOME:/Users/alisa
LC_CTYPE:en_GB.UTF-8
LD_LIBRARY_PATH:/usr/local/Cellar/opencv/4.5.5_2/lib/python3.9/site-packages/cv2/../../../../lib:
LOGNAME:alisa
PATH:/usr/bin:/bin:/usr/sbin:/sbin
PWD:/Volumes/GoogleDrive/My Drive/Phonebot/Phonebot_debug3
PYCHARM_HOSTED:1
PYTHONIOENCODING:UTF-8
PYTHONPATH:/Volumes/GoogleDrive/My Drive/Phonebot/Phonebot_debug3
PYTHONUNBUFFERED:1
SHELL:/bin/zsh
SSH_AUTH_SOCK:/private/tmp/com.apple.launchd.OJCYKYn5oR/Listeners
TMPDIR:/var/folders/gg/d60v4x454xd_n7dzwkv_y9140000gn/T/
USER:alisa
XPC_FLAGS:0x0
XPC_SERVICE_NAME:com.jetbrains.pycharm.20596
__CF_USER_TEXT_ENCODING:0x1F5:0x0:0x2
Вы можете видеть, что PATH не совпадают, поэтому я получаю сообщение об ошибке «команда не найдена».
Вот Python код, который я использую для отображения переменной среды:

Код: Выделить всё

def GetEnvVariables():
dico_env={}

for k, v in sorted(os.environ.items()):
#print(k+':', v)
dico_env[k]=v
print(f"dico_env:{dico_env}")
return dico_env

dico=mymodules.GetEnvVariables()
for key, value in dico.items():
print('%s:%s\n' % (key, value))
Я также пробовал использовать эту команду:

Код: Выделить всё

print(os.environ.get('PATH'))
И вот результат:

Код: Выделить всё

/usr/bin:/bin:/usr/sbin:/sbin
Опять же, значение PATH не совпадает со значением моего файла .zshrc
Я использую pycharm для выполнения моего кода Python. Итак, я запускаю свой код с терминала, и на этот раз он сработал!
Я остановил и перезапустил Pycharm, и у меня все еще есть та же проблема.
Кто-нибудь знает, как я могу изменить Pycharm для учитывать все переменные среды?
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/723 ... e-the-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»