Как активировать окружение Python и выполнить команду Python в скрипте оболочки на виртуальной машине Ubuntu.

Вопрос или проблема

Я могу запустить скрипт ниже на удаленном сервере с ubuntu 22.04. Тем не менее, тот же скрипт на моей виртуальной машине ubuntu 22.04, работающей как гость на Windows, не запускается. Запуск скрипта в терминале с помощью “python script.py” проходит без ошибок, при этом среда python активируется вручную. Вот что я пробовал до сих пор

#!/bin/bash
export PATH=/home/zmumba/anaconda3/bin:$PATH

eval "$(/home/zmumba/anaconda3/bin/conda shell.bash hook 2> /dev/null)"
/home/zmumba/anaconda3/bin/conda run -n py12 python /home/zmumba/DA/Dekad_Progs/Programs/09_RiskMap.py

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

ModuleNotFoundError: No module named 'geopandas'

“conda install geopandas дает

# All requested packages already installed.

Затем я добавил (из некоторых постов) перед командой

source /home/zmumba/anaconda3/etc/profile.d/conda.sh
conda activate py12

Та же ошибка geopandas. Буду признателен за любую помощь.

Вы это читали? https://geopandas.org/en/stable/getting_started/install.html


Мы настоятельно рекомендуем либо установить все из канала по умолчанию, либо все из канала conda-forge. Получение смеси пакетов из обоих каналов для зависимостей GeoPandas может привести к проблемам с импортом. См. раздел conda-forge о использовании нескольких каналов для получения дополнительной информации.

Если вы установили оба, удалите оба, а затем установите один.


Если Anaconda не работает, попробуйте с pip (после удаления версий Anaconda) обязательно

pip install numpy pandas shapely pyproj pyogrio pyproj packaging

Если вы хотите опциональные зависимости, установите их сейчас опционально

  • fiona (опционально; медленная альтернатива pyogrio)
  • psycopg (опционально; для подключения PostGIS)
  • psycopg2 (опционально; для подключения PostGIS – старая версия библиотеки psycopg)
  • GeoAlchemy2 (опционально; для записи в PostGIS)
  • geopy (опционально; для геокодирования)
  • pointpats (опционально; для продвинутой выборки точек)

Для построения опционально:

  • matplotlib (>= 3.5.0)
  • fmapclassify (>= 2.4.0)
  • folium (для интерактивной визуализации)

затем обязательно

pip install geopandas

Если это не работает, попробуйте установить из Github –

git clone https://github.com/geopandas/geopandas.git
cd geopandas
pip install .

Попробуйте удалить python и conda и установить их снова. Обратитесь к разделу Удаление conda на https://docs.conda.io/projects/conda/en/stable/user-guide/install/linux.html. Удаление python зависит от того, как вы его установили. Я рекомендую установить python3, если у вас его нет, так как Python 2 больше не поддерживается.


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

Ответ или решение

Для активации виртуального окружения Python и выполнения команды из оболочки на Ubuntu VM можно воспользоваться следующими подходами. Поскольку вы уже упомянули проблемы с запуском скрипта, когда он используете Anaconda, и возникает ошибка "ModuleNotFoundError: No module named ‘geopandas’", я предоставлю подробное руководство с шагами по устранению неполадок и выполнению вашего скрипта.

Шаг 1: Убедитесь в корректной установке Anaconda и зависимостей

  1. Проверьте установку Anaconda:
    Убедитесь, что Anaconda установлена правильно, выполнив команду в терминале:

    conda --version
  2. Проверьте наличие пакета geopandas:
    Активируйте ваше окружение и проверьте установленные пакеты:

    conda activate py12
    conda list geopandas

    Если пакет установлен, вывод должен содержать информацию о версии.

  3. Если не установлен, установите geopandas:
    Используйте следующий команду, чтобы установить geopandas из канала conda-forge:

    conda install -c conda-forge geopandas

Шаг 2: Правильная настройка скрипта оболочки

Чтобы правильно запустить Python скрипт из bash скрипта, выполните следующие шаги:

  1. Создайте создайте файл скрипта, например run_script.sh:

    #!/bin/bash
    # Задайте переменные окружения для Anaconda
    export PATH="/home/zmumba/anaconda3/bin:$PATH"
    source /home/zmumba/anaconda3/etc/profile.d/conda.sh  # Инициализация сценариев conda
    
    # Активация вашего окружения
    conda activate py12
    
    # Выполнение вашего Python скрипта
    python /home/zmumba/DA/Dekad_Progs/Programs/09_RiskMap.py
  2. Сделайте скрипт исполняемым:
    Убедитесь, что ваш скрипт имеет права на выполнение:

    chmod +x run_script.sh

Шаг 3: Выполнение скрипта

Теперь вы сможете выполнить ваш скрипт с помощью команды:

./run_script.sh

Шаг 4: Дополнительные проверки

Если вы все еще сталкиваетесь с ошибками после выполнения вышеуказанных шагов, вот несколько дополнительных шагов для устранения неполадок:

  • Проверьте, что Anaconda правильно настроена:
    Иногда может помочь перезапуск терминала или системы после первого запуска Anaconda.

  • Убедитесь в отсутствии конфликтующих версий пакетов: Использование pip и conda в одном окружении может привести к конфликтам. Убедитесь, что все необходимые пакеты установлены из одного источника, предпочтительно conda-forge.

  • Установите зависимости вручную через pip, если Anaconda не помогает:
    Если вы предпочитаете pip, можете использовать команды, приведенные в вашем источнике:

    pip install geopandas

Заключение

С помощью вышеуказанных шагов вы сможете активировать виртуальное окружение Python и успешно выполнить ваш скрипт в Ubuntu VM. Пользуйтесь рекомендациями по управлению пакетами и окружениями, чтобы избежать проблем с несовместимыми версиями. Если проблема сохраняется, рассмотрите возможность создания нового виртуального окружения или даже новой виртуальной машины, чтобы исключить конфликты.

Оцените материал
Добавить комментарий

Капча загружается...