xlwings runpython EOL错误

时间:2017-09-16 16:55:17

标签: python excel vba xlwings

我最近在我的Mac上安装了xlwings,目前我正在尝试编写一个小程序来更新一些数据(通过请求)。作为测试,我尝试通过API更新加密货币价格并将其写入excel。 不使用runpython,代码可以正常工作。但是,只要我运行我的VBA代码, 我收到这个错误:

 File "<string>", line 1

import sys, os;sys.path.extend(os.path.normcase(os.path.expandvars('/Users/Dennis/Documents/crypto;

                                                                                                  ^

SyntaxError: EOL while scanning string liberal

我搜索了很多主题和论坛,但似乎无法找到问题的答案。 为了更好地理解,

我的python代码:

import requests, json
from datetime import datetime
import xlwings as xw

def do():
   parameter = {'convert' : 'EUR'}

   #anfrage über API
   query_ticker = requests.get('https://api.coinmarketcap.com/v1/ticker',   params = parameter)


   #anfragedaten in JSON-format
   data_ticker = query_ticker.json()


   wb = xw.Book.caller()
   ws0 = wb.sheets['holdings']

   for entry in data_ticker:

       # update eth price
       if entry['symbol'] == 'ETH':
        ws0.range('B14').value = float(entry['price_eur'])

       #update btc price
       if entry['symbol'] == 'BTC':
        ws0.range('B15').value = float(entry['price_eur'])

       if entry['symbol'] == 'NEO':
        ws0.range('B16').value = float(entry['price_eur'])

       if entry['symbol'] == 'XRP':
        ws0.range('B17').value = float(entry['price_eur'])

   now = datetime.now()
   write_date = '%s.%s.%s' %(now.day, now.month, now.year)
   write_time = '%s:%s:%s' %(now.hour, now.minute,now.second)

   ws0.range('B2').value = write_date
   ws0.range('B3').value = write_time

   wb.save('holdings.xlsm')
   #wb.close()

这是我的vba代码:

Sub update_holdings()
    RunPython ("import update_holdings; update_holdings.do()")
End Sub

1 个答案:

答案 0 :(得分:0)

解决了这个问题。我只想为可能面临同样问题的任何人发布解决方案。

我去检查我的xlwings.conf文件,以便查看&#34; INTERPRETER&#34;的设置。和&#34; PYTHONPATH&#34;。我从未对此进行过编辑,但格式不正确。

正确格式为:

"INTERPRETER","pythonw"
"PYTHONPATH",""

我的配置文件是这样设置的:

"PYTHONPATH","
"
"INTERPRETER","Python"

此外,默认情况下,我的python路径设置不正确。即使我的命令行使用Anaconda python 3.6,&#34; pythonw&#34;使用了.bash_profile中设置的解释器,它引用了预装了macOS的python 2.7。 编辑配置文件&#34; INTERPRETER&#34;解决了这个问题。

谢谢大家。