Когда я пытаюсь использовать внешний модуль (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
, с тем же результатом. Большое спасибо!