Я пытаюсь запустить простой скрипт Python из Excel, вызывая скрипт в макросе VBA. Всякий раз, когда я запускаю скрипт из Spyder, он выполняется отлично. Тем не менее, когда я вызываю скрипт из Excel с использованием VBA, он терпит неудачу. Это происходит только тогда, когда я импортирую Numpy или Pandas (я не пробовал другие библиотеки) в скрипт.
Макрос VBA, который вызывает скрипт, находится здесь:
Sub RunPythonScript2()
'Declare our variables
Dim RetVal As String
Dim exe As String
Dim python As String
Dim paths As String
exe = "C:\Users\myname\Anaconda3\pythonw.exe"
python = "C:\Users\myname\OneDrive\Reference Documents\Python\Excel and Python\03 Script.py"
paths = """" & exe & """" & " " & """" & python & """"
RetVal = Shell(paths, vbNormalFocus)
End Sub
Сценарий Python, который работает здесь:
import win32com.client
excelapp = win32com.client.Dispatch("Excel.Application")
wb = excelapp.Workbooks(1)
sht = wb.Worksheets(1)
sht.Range('A1').Value = "Hello World "
Пока все работает отлично. Однако, если я добавлю оператор для импорта Numpy или Pandas в скрипт python, я больше не смогу успешно вызвать скрипт из Excel. Однако я могу запустить скрипт из Spyder и получить ожидаемый результат.
Я первоначально назвал python.exe
, но когда я использовал:
import sys
print(sys.executable)
Я видел, что Спайдер звонил pythonw.exe
. Кажется, не имеет значения, звоню ли я python.exe
или pythonw.exe
.
Я не получаю никаких сообщений об ошибках при импорте Numpy и запуске сценария. В результате ничего не печатается в Excel.
Я использую следующие версии пакетов для Windows 10, 64-битная
- Python версия 3.7.3
- numpy версия 1.16.2
- pywin32 версия 223
- Пользовательская версия Anaconda (потому что я установил xlwings и геопанды)
Я бы хотел иметь возможность напечатать что-то подобное в Excel:
sht.Range('A1').Value = np.pi
редактирует -------------------------------------
Я также подтвердил, что это связано с Numpy. Я смог import sys
в своем коде Python без каких-либо проблем, но у меня все еще есть проблемы с Numpy и Pandas.
Другие люди смогли успешно запустить этот код, поэтому я подозреваю, что это должно быть какая-то проблема, связанная с окружающей средой. Тем не менее, я не знаю, как управлять своей средой.
Смотрите это видео на YouTube и комментарии к примеру:
https://www.youtube.com/watch?v=oVNeufjrx8M&list=PLcFcktZ0wnNnf4eh5ObzPzoLFOzTiFVKa&index=6&t=0s
Я пробовал чистую установку Anaconda, и у меня все еще есть проблема. Вот что возвращает conda info
:
active environment : base
active env location : C:\Users\<user>\AppData\Local\Continuum\anaconda3
shell level : 1
user config file : C:\Users\<user>\.condarc
populated config files : C:\Users\<user>\.condarc
conda version : 4.6.14
conda-build version : 3.17.8
python version : 3.7.3.final.0
base environment : C:\Users\<user>\AppData\Local\Continuum\anaconda3 (writable)
channel URLs : https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/free/win-64
https://repo.anaconda.com/pkgs/free/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
package cache : C:\Users\<user>\AppData\Local\Continuum\anaconda3\pkgs
C:\Users\<user>\.conda\pkgs
C:\Users\<user>\AppData\Local\conda\conda\pkgs
envs directories : C:\Users\<user>\AppData\Local\Continuum\anaconda3\envs
C:\Users\<user>\.conda\envs
C:\Users\<user>\AppData\Local\conda\conda\envs
platform : win-64
user-agent : conda/4.6.14 requests/2.21.0 CPython/3.7.3 Windows/10 Windows/10.0.14393
administrator : False
netrc file : None
offline mode : False
Эта же проблема возникает как на моем компьютере дома, так и на компьютере на работе.