Как настроить нового пользователя на сервере linux для работы с Python? - PullRequest
0 голосов
/ 23 января 2020

Я добавил нового пользователя на сервере linux.

Хотя я могу запустить простой скрипт python, новый пользователь получает ошибки при импорте пакета, который я могу загрузить.

Например,

import matplotlib as plt

возвращает

no module named 'matplotlib'

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Это может быть по нескольким причинам.

matplotlib установлен как пользователь

Если вы установили matplotlib с pip install --user package в другой учетной записи пользователя. Не ожидайте, что у другого пользователя будет доступен этот пакет, этого не произойдет.

Установите пакет с pip install package, который будет доступен для всей системы, для всех пользователей.

Запись. В зависимости от вашей настройки c вам могут потребоваться повышенные разрешения.

matplotlib устанавливается в другую python версию

Независимо от того, как вы установили пакет (см. Выше), возможно, вы установили его в версии, отличной от той, которую пытаетесь запустить.

Чтобы убедиться, что вы можете импортировать пакет, как в python -m package, используйте python -m pip install package. Это гарантирует, что для установки используется тот же интерпретатор python, что и для выполнения.

Лучшие подходы

Еще один стандартный подход

Изучение и использование виртуальных сред. Они предназначены для установки интерпретатора python для каждого проекта, а не для системы. Позволяя вам сохранять зависимые пакеты изолированными от python пакетов вашей системы.

еще один более продвинутый подход

Я воспользуюсь возможностью поделиться небольшим Makefile, который обрабатывает эту чушь для меня. Управляет виртуальной средой в папке для разработки и обновляет ее с учетом того, какие пакеты установлены в requirements.txt.

Вызов make test достаточен для запуска набора тестов (или любой другой вещи, которую вы можете настроить) в среде с правильными пакетами.

.PHONY: test

# directory to store virtual environment
VENV_NAME=venv

# python runtime version
PYTHON_VER=3.7

# python executble
PYTHON=${VENV_NAME}/bin/python${PYTHON_VER}

# pip requirements file
REQUIREMENTS=requirements.txt

venv:           ## Recreates the virtual environment if needed.
venv: $(VENV_NAME)/bin/activate
$(VENV_NAME)/bin/activate: ${REQUIREMENTS}
    test -d $(VENV_NAME) || virtualenv -p python${PYTHON_VER} $(VENV_NAME)
    ${PYTHON} -m pip install -U pip
    ${PYTHON} -m pip install -r ${REQUIREMENTS}
    touch $@

test:           ## Runs the test suite.
test: venv
    $(PYTHON) -m pytest tests

0 голосов
/ 23 января 2020

Это потому, что вы, вероятно, сделали:

pip install --user matplotlib

для установки matplotlib на вашей стороне.

У вас есть несколько решений, здесь неисчерпывающее (docker было бы, вероятно, для этого я перебил (imo) упорядочено от худшего к лучшему:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...