ModuleNotFoundError в командной строке в виртуальной среде conda, но работает в Spyder - PullRequest
0 голосов
/ 16 марта 2020

Когда я пытаюсь использовать внешний модуль (pyperclip из conda-forge) в виртуальной среде, он работает в Spyder, но не из командного файла в командной строке. Я подозреваю, что файл по какой-то причине работает в базовой среде.

У меня обновленная 32-разрядная версия Anaconda на Windows 10 (частичный пользовательский агент: conda / 4.8.2 запросов / 2.22.0 CPython / 3.7. 4 Windows / 10 Windows), устанавливается только для моего пользователя Windows. Я проверил документацию Conda и не могу понять, как заставить это работать. Я искал в Google и здесь ответы, но ничего не нашел, извините, если пропустил.

Я запустил следующий .bat файл из Windows Explorer. Предполагается активировать мою виртуальную среду ATBS_pyperclip, проверить, есть ли в ней модуль pyperclip (он есть), запустить скрипт, который импортирует встроенный модуль pprint (успешно), и запустить скрипт, который импортирует модуль pyperclip (безуспешно: throws ModuleNotFoundError).

CALL C:\Users\Owner\Anaconda3\Scripts\activate ATBS_pyperclip
CALL conda list pyperclip
CALL conda run C:\Users\Owner\OneDrive\Documents\Python\ch_6_text\copy_test_2.py
CALL conda run C:\Users\Owner\OneDrive\Documents\Python\ch_6_text\copy_test_1.py
echo test

Я получаю следующую ошибку в Windows командной строке ModuleNotFoundError: No module named 'pyperclip', хотя две строки над ней сообщают о наличии этого модуля. Файл также импортирует и успешно использует встроенный модуль pprint, который показывает, что некоторые импортированные модули работают, возможно, все в среде base.

C:\Users\Owner\OneDrive\Documents\Python\spyder>CALL C:\Users\Owner\Anaconda3\Scripts\activate ATBS_pyperclip

(ATBS_pyperclip) C:\Users\Owner\OneDrive\Documents\Python\spyder>CALL conda list pyperclip
# packages in environment at C:\Users\Owner\Anaconda3\envs\ATBS_pyperclip:
#
# Name                    Version                   Build  Channel
pyperclip                 1.7.0                      py_0    conda-forge

(ATBS_pyperclip) C:\Users\Owner\OneDrive\Documents\Python\spyder>CALL conda run C:\Users\Owner\OneDrive\Documents\Python\ch_6_text\copy_test_2.py
{'greeting': 'hello', 'subject': 'world'}


(ATBS_pyperclip) C:\Users\Owner\OneDrive\Documents\Python\spyder>CALL conda run C:\Users\Owner\OneDrive\Documents\Python\ch_6_text\copy_test_1.py
ERROR conda.cli.main_run:execute(32): Subprocess for 'conda run ['C:\\Users\\Owner\\OneDrive\\Documents\\Python\\ch_6_text\\copy_test_1.py']' command failed.  (See above for error)
{'greeting': 'hello', 'subject': 'world'}

Traceback (most recent call last):
  File "C:\Users\Owner\OneDrive\Documents\Python\ch_6_text\copy_test_1.py", line 10, in <module>
    import pyperclip
ModuleNotFoundError: No module named 'pyperclip'


(ATBS_pyperclip) C:\Users\Owner\OneDrive\Documents\Python\spyder>echo test
test

Файл copy_test_1.py содержит:

# -*- coding: utf-8 -*-
"""
Test script to copy to clipboard, checking if works in windows command line
Uses the pyperclip module
"""
import pprint #just to check if exists. It works
pprint.pprint({'greeting':'hello', 'subject': 'world'})
import pyperclip # this does not work: ModuleNotFoundError: No module named 'pyperclip'
pyperclip.copy('Copy succeeded!')
print('Copy succeeded + printed!')

Файл copy_test_2.py такой же, за исключением трех последних строк. Этот файл, как и ожидалось, запускается как в Spyder, так и из файла .bat (в командной строке), предположительно, поскольку он также может работать в базовой среде. Я также попытался указать среду в команде запуска: CALL conda run --name ATBS_pyperclip C:\Users\Owner\OneDrive\Documents\Python\ch_6_text\copy_test_1.py, с тем же результатом. Большое спасибо!

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