python conda — создал новую среду, но все еще использовал python в базовой среде

#python #anaconda #virtualenv #conda

#python #anaconda #virtualenv #conda

Вопрос:

Недавно я обнаружил эту проблему, но я не помню, чтобы эта проблема возникала раньше:

Если я создал новую среду с именем test , установил python и пакет, который не предустановлен в базовой среде, например, netCDF :

 (base) $ conda create -n test  
(base) $ source activate test
(test) $ conda install python
(test) $ conda install -c conda-forge netcdf4
  

Но в командной строке, похоже, она все еще использовала python базовой среды:

 (test) $ which python
/mypath/anaconda3/bin/python
  

Итак, в оболочке python не удалось импортировать netcdf :

 (test) $ python
>>> import netCDF4
ModuleNotFoundError: No module named 'netCDF4'
  

Но в моей IDE (например, jupyter notebook) она работает хорошо. Он успешно использует python в test среде, потому что он может импортировать netCDF без каких-либо проблем:

 [1] import netCDF4   (in jupyter, it is imported successfully)
  

Почему произошла эта ситуация? Почему я был в test среде, но все еще использовал python base среды?

Любое предложение полезно. Большое спасибо!

Комментарии:

1. Как насчет того, чтобы conda create -n test python=3.6 или даже conda create -n test python=3.6 anaconda установить Python вместе с новым env?

2. @S3DEV Спасибо, но это все равно не удалось…

3. возвращает ли следующее что-нибудь? : (тест) $ который python3

4. @BastienHarkins Он по-прежнему возвращает тот же результат. Результаты (test) $ which python , (test) $ which python3 и (base) $ which python идентичны.

5. @merv Большое спасибо за вашу помощь! Я до сих пор не выяснил причину, по которой неправильный путь добавляется к ПУТИ после source activate as2 . Мое альтернативное решение (но жестокое) — создать скрипт reset_python_path.sh в /Dellwork4/cwullu/anaconda3/envs/as2/etc/conda/activate.d , чтобы сбросить путь python на правильный, а также восстановить исходную настройку в deactivate.d . Это грязное решение, но, по крайней мере, оно может работать сейчас.

Ответ №1:

 $ conda create --name test python=3.7
$ conda activate test
$ which python
  

Вывод: /home/user/miniconda3/envs/test/bin/python