Конда ищет библиотеку снаружи активировать среду - PullRequest
0 голосов
/ 22 января 2019

Я работаю в Windows, я нахожу разницу в поведении импорта в среде, созданной conda, которую я не могу понять, здесь подробности

Случай 1 (успех)

(base) C:\> conda activate <env-name>
(env-name) C:\> python
>>> import numpy
(Success)

Случай 2 (неудача)

C:\> cd <path-to-conda-env>
C:\path-to-conda-env> python
>>> import numpy
(Fail)

Я уже сталкивался с этой проблемой с пакетом ssl, и это можно исправить установкой пакета из conda-forge, а не default, так что, похоже, проблема с пакетом

Что меня беспокоит, так это то, что оператор import загружает что-то вне моего conda env, когда я проверил sys.path и sys.executable одинаковы в обоих случаях

Что я здесь упустил? Любые входные данные приветствуются.

Привет

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вам необходимо активировать свою среду. Смотрите, что:

(base) C:\> conda activate <env-name>
(env-name) C:\> python
>>> import numpy
(Success)

Существует (base), что означает, что имя активной среды на основе . Попробуй сделать conda info --envs

чтобы увидеть список окружений.

Когда вы делаете:

C:\> cd <path-to-conda-env>
C:\path-to-conda-env> python
>>> import numpy
(Fail)

Вы переходите к папке среды, но не используете среду Python, которую она содержит.

Попробуйте использовать:

which python

чтобы узнать, какую версию Python вы используете.

0 голосов
/ 22 января 2019

Я воспроизвел проблему (идентично sys.path, что исключило мое первоначальное предположение: % PYTHONPATH% ) на моей стороне с Анаконда 2018.12 .Настройка среды (будь то Ancaonda , VEnv или любой другой подобный инструмент) состоит из (в основном) установки некоторых переменных среды.

После тестирования с некоторыми другими модулями (помимо numpy и ssl ), взглянув на ошибки, я понял, что отказавшие модули имеют другие собственные .dll зависимости.Учитывая [MS.Docs]: порядок поиска в библиотеке Dynamic-Link , я отобразил содержимое моей переменной % PATH% внутри процесса Python .В версии с поддержкой conda приведенные ниже пути присутствовали в начале:

>>> import os
>>> import pprint
>>>
>>> pprint.pprint(os.environ["PATH"])
('e:\\Install\\x64\\Anaconda\\Anaconda\\2018.12;e:\\Install\\x64\\Anaconda\\Anaconda\\2018.12\\Library\\mingw-w64\\bin;e:\\Install\\x64\\Anaconda\\Anaconda\\2018.12\\Library\\usr\\bin;e:\\Install\\x64\\Anaconda\\Anaconda\\2018.12\\Library\\bin;e:\\Install\\x64\\Anaconda\\Anaconda\\2018.12\\Scripts;e:\\Install\\x64\\Anaconda\\Anaconda\\2018.12\\bin;
# The rest of the dirs (regular ones)

Само собой разумеется, что проблема исчезла после добавления тех в моем % PATH% перед запуском нормальный Python :

e:\Install\x64\Anaconda\Anaconda\2018.12>set PATH=e:\Install\x64\Anaconda\Anaconda\2018.12;e:\Install\x64\Anaconda\Anaconda\2018.12\Library\mingw-w64\bin;e:\Install\x64\Anaconda\Anaconda\2018.12\Library\usr\bin;e:\Install\x64\Anaconda\Anaconda\2018.12\Library\bin;e:\Install\x64\Anaconda\Anaconda\2018.12\Scripts;e:\Install\x64\Anaconda\Anaconda\2018.12\bin;%PATH%

e:\Install\x64\Anaconda\Anaconda\2018.12>python
Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> import ssl

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

@ EDIT0 :

Как я указал в одном из комментариев, чтобы добавить среду в PyCharm , выполните шагииз [SO]: Как установить Python, используя «встраиваемый zip-файл» (ответ @ CristiFati) , с некоторыми упоминаниями:

  • На шаге #4. выберите « Conda Environment » вместо « Virtualenv Environment »
  • Видимо, проблема сохраняется при запуске Python Console .Это не должно иметь место, кажется, что среда не установлена.Может быть, это потому, что я не создал среду, я просто запускаю Python из корневой установки Anaconda ?В любом случае, в качестве обходного пути ( gainarie ) я применяю те же изменения (настройка % PATH% ) для Python Console (из ")Настройки -> Построение, Выполнение, Развертывание -> Консоль -> Консоль Python"), как показано на рисунке ниже:

    Img00 - Console settings

    Послеперезагрузка консоли, все работает нормально.

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