Только что установил miniconda на C:\Anaconda 3
и запустил conda install numpy
без оболочки Anaconda (по умолчанию используется conda base как env).
Если я запускаю командную строку Anaconda и набираю python >> import numpy
, все работает нормально.
Если я открою обычное командное окно и доберусь до c:\Anaconda3
и запускаю python >> import numpy
, то это не получится (ошибка ниже).
Я проверил sys.path
, и они одинаковы на обоихCMD окна. Единственное решение - запустить в обычном окне CMD, выполнив: c:\Anaconda3\Scripts\conda activate base
, а затем запустить python >> import numpy
.
В прошлом у меня были установки Miniconda, у которых не было этой проблемы, поэтому я удивлен, что внезапно мне пришлосьактивировать среду. Я думал, что базовая среда загружена по умолчанию, но кажется, что это не тот случай, и я должен заставить это.
Я получаю ошибку:
>>> import numpy
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "c:\Anaconda3\lib\site-packages\numpy\__init__.py", line 140, in <module>
from . import _distributor_init
File "c:\Anaconda3\lib\site-packages\numpy\_distributor_init.py", line 34, in
<module>
from . import _mklinit
ImportError: DLL load failed: The specified module could not be found.
Я обнаружил, чтоЯ мог бы запустить из командной строки: C:\Anaconda3\python.exe C:\Anaconda3\cwp.py C:\Anaconda3 C:\Anaconda3\python.exe
, а затем запустить import numpy
, и это будет работать. Файл cwp.py выглядит следующим образом:
# this script is used on windows to wrap shortcuts so that they are executed within an environment
# It only sets the appropriate prefix PATH entries - it does not actually activate environments
import os
import sys
import subprocess
from os.path import join, pathsep
from menuinst.knownfolders import FOLDERID, get_folder_path, PathNotFoundException
# call as: python cwp.py PREFIX ARGs...
prefix = sys.argv[1]
args = sys.argv[2:]
new_paths = pathsep.join([prefix,
join(prefix, "Library", "mingw-w64", "bin"),
join(prefix, "Library", "usr", "bin"),
join(prefix, "Library", "bin"),
join(prefix, "Scripts")])
env = os.environ.copy()
env['PATH'] = new_paths + pathsep + env['PATH']
env['CONDA_PREFIX'] = prefix
documents_folder, exception = get_folder_path(FOLDERID.Documents)
if exception:
documents_folder, exception = get_folder_path(FOLDERID.PublicDocuments)
if not exception:
os.chdir(documents_folder)
sys.exit(subprocess.call(args, env=env))
PS: Если вас интересует «зачем это нужно, если вы можете просто активировать базу»? Например, при использовании xlwings скрипт вызывает python.exe (без предварительной активации среды, даже если я думал, что использование python.exe в корневой папке означает, что вам не нужно активировать базовую среду). Это неприятно, так как я получаю сообщение об ошибке при попытке загрузить numpy.
Спасибо!