У меня есть набор переменных, которые я использую для разных проектов. Существует ли какой-либо файл конфигурации или аналогичные параметры, которые автоматически загружают набор предопределенных переменных при создании / открытии нового сценария?

Например, если у меня есть:

x = "hello"
y = 55

Тогда я бы хотел, чтобы эти переменные были определены автоматически. Я знаю, что профиль .R делает нечто подобное в RStudio, но я ищу эту опцию в Python. Я использую Spyder IDE, если это поможет.

0
Jared 1 Июл 2019 в 22:22

3 ответа

Лучший ответ

Python не имеет никакого понятия о файлах rc.

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

Если вы хотите сделать это на системном уровне, вы можете создать переменные среды в вашем ~/.bashrc, например:

export PY_X='hello'
export PY_Y=55

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

Затем в ваших файлах Python вы можете получить к ним доступ из os.environ dict:

x = os.environ.get('PY_X', None)
y = os.environ.get('PY_Y', None)

В противном случае, для того, чтобы иметь переменные только для процесса python, вы можете напрямую использовать их во время запуска процесса:

PY_X='hello' PY_Y=55 python ...

Получение переменных env аналогично упомянутому выше.

0
heemayl 1 Июл 2019 в 19:28

Я не знаю, является ли это лучшим способом, но это сценарий bash, который я сделал некоторое время назад для создания новых файлов perl (я изменил его, чтобы он был для вас python). Может быть полезно в зависимости от того, сколько вещей вы хотите поместить в файл.

#!/bin/bash
# usage
if [ "$1" == "-h" -o -z "$1" ]; then
  echo "Usage: ~/.mkpython file1.py <file2.py>"
  echo "  No  file2.pl passed -> Creates empty file1.py and opens in vim insert mode"
  echo "  Yes file2.pl passed -> Copies file2.py into file1.py and opens vim insert"
  exit 0
fi

# prevents accidental erase of file
if [ -a $1 ]
  then
    read -p "replace file $1? " -n 1 -r
    echo
    if [[ ! $REPLY =~ [Yy]$ ]]
      then
        exit 1
    fi
fi

#copies file 2 into file 1
if [ -n "$2" -a -a $2 ]
  then
    cat $2 > $1
    chmod 0755 $1 && vim $1
    exit 0
fi

#if no file 2 then creates a basic file 1

echo 'Stuff you want in your file goes here' > $1
chmod 0755 $1 && vim -c 'startinsert' $1 +3
0
noah 1 Июл 2019 в 19:28

Это может оказаться полезным для вас. Описывает систему конфигурации IPython. Короче говоря, вы можете поместить в файл ~ / .ipython / profile_default / ipython_config.py все, что захотите, и он будет запускаться каждый раз, когда вы запускаете интерпретатор IPython. Если вы используете другого переводчика, вам придется указать лучший ответ.

0
MichaelD 1 Июл 2019 в 20:52