Как запустить скрипт Python, содержащий пакет xlwings, в командной строке

Я пытаюсь запустить скрипт python3 в командной строке Windows (cmd), но сталкиваюсь с проблемой, если скрипт python содержит пакет xlwings. Я использую пакет xlwings для чтения и записи информации, которая мне нужна, в файл excel. Я провел некоторые исследования, но все решения направлены на запуск python из excel (имеется в виду вызов скрипта python в vba), и я не хочу этого делать. Вот пример кода Python для тестирования.

import xlwings as xw

bookName= r'C:\Users\Desktop\Python_Projects\Test.xlsm'
wb= xw.Book(bookName)#specified full name of excel file
sht = wb.sheets('Sheet1')
app= xw.apps.active #need to kill excel apps

sht.api.Cells(1,1).Value="test"
sht.api.Cells(1,1).Font.Bold = True

wb.save(bookName)
wb.close()
app.kill() #or del app

Я пытаюсь запустить скрипт и столкнулся с этой проблемой:

Нет модуля с именем xlwings

Я запускаю код из своей IDE Pycharm, без проблем и могу работать. Примечание. У меня нет прав администратора в Windows.

Дополнение: я попытался найти сообщение, похожее на мою среду (с использованием Pycharm — не запускать через терминал, настроить как виртуальную среду), но с другой проблемой. Я не очень понимаю ответ в этом посте. Таким образом, не уверен, решает ли ответ мою текущую проблему или нет. Если решение такое же, надеюсь, что кто-то может описать его более подробно. Вот ссылка: скрипт Python работает в PyCharm, но выдает ошибки пути в Windows cmd


person user2851376    schedule 24.07.2018    source источник
comment
Хорошо, Pycharm настроен на использование virtualenv? Есть ли xlwings внутри virtualenv? Вы активировали виртуалку?   -  person OneCricketeer    schedule 24.07.2018
comment
Включает ли pip list пакет xlwings? Будет ли иначе, если вы запустите ту же команду в терминале pycharm?   -  person ScottMcC    schedule 24.07.2018
comment
@cricket_007 ты имел в виду переводчик моего проекта? Да, xlwings внутри virtualenv, и он был активирован в Pycharm.   -  person user2851376    schedule 24.07.2018
comment
@ScottMcC В терминале списка пипсов есть xlwings, и я запустил код в терминале, похоже, ошибка в строке app.kill(), хотя со вчерашнего дня проблем не было. Теперь возникли трудности с исправлением ошибки. :(   -  person user2851376    schedule 24.07.2018
comment
@ScottMcC уже отредактировал код и попытался запустить в PyCharm, и терминал PyCharm не имеет проблем. Но все еще сталкиваюсь с той же проблемой при попытке запустить в cmd   -  person user2851376    schedule 24.07.2018
comment
Я обнаружил нечто странное. Когда я пытаюсь import sys; print(sys.executable) в терминале pycharm, он указывал на мой virtualenv, но в моем cmd указывал на папку по умолчанию python.exe, есть ли способ ее изменить?   -  person user2851376    schedule 24.07.2018
comment
Вам нужно активировать virtualenv в cmd   -  person OneCricketeer    schedule 24.07.2018
comment
@cricket_007 Да, я уже нашел набор для активации virtualenv по этой ссылке и ее работает! Дело в том, как я могу применить в своем скрипте Python, потому что мне нужно его автоматически запускать? Нужно ли мне убедиться, что все пакеты, которые я использую в virtualenv, также доступны в Python по умолчанию?   -  person user2851376    schedule 25.07.2018
comment
Я считаю, что поведение virtualenv по умолчанию заключается в том, чтобы забрать все библиотеки из родительского python, но всегда рекомендуется устанавливать все зависимости в этот venv. И вы можете просто изменить свои сценарии запуска, чтобы использовать /path/to/venv/python script.py без активации.   -  person OneCricketeer    schedule 25.07.2018
comment
@cricket_007 Понятно... хорошо, спасибо. Теперь делаем следующий шаг, чтобы найти, как автоматически установить список пакетов с помощью скрипта Python :)   -  person user2851376    schedule 25.07.2018
comment
pip install -r requirements.txt это канонический способ   -  person OneCricketeer    schedule 25.07.2018
comment
@cricket_007 ооооо... круто! Спасибо за вашу помощь :)   -  person user2851376    schedule 26.07.2018


Ответы (1)


Перемещение комментариев вниз, чтобы ответить...

Похоже, что PyCharm был настроен для использования virtualenv, поэтому вы нашли ссылку, по которой вы обнаружили, что вам нужно активировать виртуальную среду

Отсюда любой PyCharm столкнулся с pip install, и оттуда вы можете запустить python и попытаться импортировать любые модули.

Если вы не активируете среду, вам нужно будет запустить свои скрипты, указав полный путь к исполняемому файлу Python — C:\path\to\venv\python script.py

Чтобы сделать резервную копию списка установленных модулей из virtualenv, вы можете сделать pip freeze > requirements.txt

Затем pip install -r requirements.txt восстановит их в любую только что созданную виртуальную среду.

person OneCricketeer    schedule 26.07.2018