PyCharm — автоматическая установка переменных окружения

Я использую virtualenv, virtualenvwrapper и PyCharm. У меня есть сценарий постактивации, который запускает команду экспорта для применения переменных среды, необходимых для каждого проекта, поэтому, когда я запускаю workon X, переменные готовы для меня.

Однако при работе с PyCharm я не могу заставить его использовать эти переменные, запустив файл постактивации (в настройке перед запуском). Мне приходится вручную вводить каждую переменную среды в окне конфигурации Run/Debug.

Есть ли способ автоматически установить переменные среды в PyCharm? Или мне нужно делать это вручную для каждого нового проекта и изменения переменных?


person asafge    schedule 05.12.2013    source источник
comment
asafge, вы нашли решение, которое позволяет то, что вы изначально пытались сделать, применяя переменные среды перед запуском сценариев или какой-либо другой сценарий, который может запускать PyCharm?   -  person NESPowerGlove    schedule 18.08.2016
comment
@NESPowerGlove см. ответ Антеро Ортиса. OP Я предлагаю принять это, так как это прекрасно решает вашу проблему! Только что попробовал сам.   -  person Colin Nichols    schedule 05.10.2016


Ответы (4)


Я искал способ сделать это сегодня и наткнулся на другой вариант того же вопроса (ссылка ниже) и оставил там свое решение, хотя оно кажется полезным и для этого вопроса. Они обрабатывают загрузку переменных среды в самом коде.

Учитывая, что это в основном проблема в процессе разработки, я предпочитаю такой подход:

  1. Откройте терминал

  2. Предполагая, что используется virtualenvwrapper, активируйте virtualenv проекта, который запустит хуки, и установите переменные среды (при условии, что вы устанавливаете их, скажем, в хуке постактивации)

  3. Запустите PyCharm из этой командной строки.

После этого Pycharm получит доступ к переменным среды. Вероятно, из-за того, что процесс PyCharm является дочерним элементом оболочки.

https://stackoverflow.com/a/30374246/4924748

person Antero Ortiz    schedule 21.05.2015

У меня такая же проблема. Попытка поддерживать переменные среды через пользовательский интерфейс — утомительная работа. Кажется, что pycharm загружает переменные env через bash_profile только один раз при запуске. После этого любой экспорт или попытка запустить before job для изменения bash_profile бесполезны.

интересно, когда команда pycharm улучшит это

В моем случае мой обходной путь для удаленного интерпретатора работает лучше, чем локальный, поскольку я могу изменить /etc/environment и перезагрузить виртуальную машину.

для локального переводчика лучшее решение, которое я могу сделать, это:

<сильный>1. Создайте шаблон конфигурации запуска/отладки и клонируйте его

Если ваши переменные окружения стабильны, это простое решение для создания конфигурации различий с теми же переменными окружения без их повторного ввода.

  1. создайте конфиг шаблона, введите нужные вам переменные env.
  2. клонировать их

см. картинку

<сильный>2. Измените свой сценарий

Возможно, добавьте некоторый код, используя os.environ[] = value в вашем основном скрипте, но я не хочу этого делать, это изменит мой код продукта и может быть случайно зафиксировано

Надеюсь, кто-то может дать лучший ответ, я слишком много времени потратил на этот вопрос...

person Freddy Tan    schedule 28.06.2014
comment
Кстати, если вам интересно решение для удаленного переводчика. Я мог бы опубликовать это. Однако это требует дополнительных настроек. требуются бродяга и виртуальный бокс - person Freddy Tan; 28.06.2014

Еще одно хакерское решение, но простое, которого для моих целей достаточно. Обратите внимание, что хотя это характерно для Ubuntu (и, предположительно, Mint) Linux, может быть что-то полезное и для Mac.

Что я делаю, так это добавляю строку в сценарий запуска (pycharm.sh), который содержит необходимые переменные среды (в моем случае я столкнулся с проблемами с cx_Oracle в Pycharm, которые иначе не влияли на сценарии, запускаемые в командной строке). Если вы храните переменные среды в файле с именем, например, .env_local, который находится в вашем домашнем каталоге, вы можете добавить следующую строку в pycharm.sh: . $HOME/.env_local

Здесь следует отметить два важных момента в отношении того, почему я специально использую '.' (а не «источник») и почему я использую «$ HOME», а не «~», которые в bash фактически взаимозаменяемы. 1) Я заметил, что pycharm.sh использует #!/bin/sh, и понял, что в Ubuntu sh теперь указывает на тире (а не на bash). 2) dash, как выясняется, не имеет «встроенного» исходного кода и не будет ~ разрешаться в ваш домашний каталог.

Я также понимаю, что каждый раз, когда я обновляю PyCharm, мне приходится изменять файл pycharm.sh, так что это не идеально. Все еще лучше, чем управлять конфигурациями запуска! Надеюсь, поможет.

person noisy_cats    schedule 31.03.2016

Хорошо, я нашел лучший обходной путь!

1.установите ткань в свой virtualenv

перейдите в терминал и
1. поработайте над вашим именем virtualenv
2. pip install Fabric

2. добавить ткань.py

добавьте файл python и назовите его "fabric.py" в корне проекта,
вставьте приведенный ниже код
и измените переменные пути на свои собственные

from fabric.api import *
import os

path_to_your_export_script = '/Users/freddyTan/workspace/test.sh'
# here is where you put your virtualenvwrapper environment export script
# could be .bash_profile or .bashrc depend on how you setup your vertualenvwrapper
path_to_your_bash_file = '/Users/freddyTan/.bash_profile'

def run_python(py_path, virtualenv_path):
    # get virtualenv folder, parent of bin
    virtualenv_path = os.path.dirname(virtualenv_path)
    # get virtualenv name
    virtualenv_name = os.path.basename(virtualenv_path)

with hide('running'), settings(warn_only=True):
    with prefix('source %s' % path_to_your_export_script):
        with prefix('source %s' % path_to_your_bash_file):
            with prefix('workon %s' % virtualenv_name):
                local('python %s' % py_path)

3. добавить внешний инструмент

перейдите в
предпочтения-> Внешние инструменты -> нажмите кнопку добавления
и введите следующую информацию

Name: whatever
Group: whatever
Program: "path to your virtualenv, should be under '$HOME/.virtualenvs' by default"/bin/fab
Parameter: run_python:py_path=$FilePath$,virtualenv_path=$PyInterpreterDirectory$
Working directory: $ProjectFileDir$

скриншот

волла, беги

перейдите к файлу main.py, щелкните правой кнопкой мыши, найдите внешнее имя (например, "что угодно") и щелкните по нему
вы также можете добавить ярлык для этого внешнего инструмента
скриншот

недостатки

это работает только на python 2.x, потому что ткань не поддерживает python 3

person Freddy Tan    schedule 15.07.2014
comment
Просто для дальнейшего использования. На втором шаге вы не должны вызывать ваш скрипт Fabric.py, потому что это приведет к ссылке на себя во время первого импорта. - person Michal; 14.08.2015
comment
Также ссылки на скриншоты мертвы. - person Michal; 14.08.2015