我最近在我的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
答案 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;解决了这个问题。
谢谢大家。