Подтвердить что ты не робот

PyCharm - автоматически устанавливает переменные среды

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

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

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

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

1. Создайте шаблон шаблона Run/Debug config и клонируйте его

Если ваши переменные env являются стабильными, это простое решение для создания diff config с одинаковыми переменными env без повторного ввода их.

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

см. рисунок

2. Измените script

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

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

Ответ 2

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

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

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

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

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

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

fooobar.com/questions/194992/...

Ответ 3

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

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

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

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

Ответ 4

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

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

перейти на терминал и
1. workon ваше имя virtualenv
2. установочная ткань для труб

2. add fabric.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$

screenshot

wolla, запустите его

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

недостатки

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