社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

facebook的python business sdk使用了一个保留关键字-workaround?

Mohan • 5 年前 • 2105 次点击  

在Python3.7中,

from facebookads.adobjects.adlabel import AdLabel 

结果在

Traceback (most recent call last):
  File "/Users/mohan/growth-tools/facebook-experiment/main.py", line 4, in <module>
    from facebookads.adobjects.adlabel import AdLabel
  File "/Users/mohan/growth-tools/facebook-experiment/venv/lib/python3.7/site-packages/facebookads/adobjects/adlabel.py", line 22, in <module>
    from facebookads.adobjects.abstractcrudobject import AbstractCrudObject
  File "/Users/mohan/growth-tools/facebook-experiment/venv/lib/python3.7/site-packages/facebookads/adobjects/abstractcrudobject.py", line 564
    params=None, async=False, include_summary=True,
                     ^
SyntaxError: invalid syntax

问题是,我认为,从Python3.7开始,Async已经成为一个保留关键字。有什么办法可以让我继续使用这个sdk吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43631
 
2105 次点击  
文章 [ 3 ]  |  最新文章 5 年前
morgonhorn
Reply   •   1 楼
morgonhorn    6 年前

最后我只是循环浏览所有文件,并将“async”的任何实例替换为“async”,我的解决方案如下:

import os, re
path = r"path\to\facebookads"

python_files = []

for dirpath, dirnames, filenames in os.walk(path):
    for filename in filenames:
        if filename.endswith(".py"):
            python_files.append(os.path.join(dirpath, filename))

for python_file in python_files:

    with open(python_file, "r") as f:
        text = f.read()
        revised_text = re.sub("async", "async_", text)

    with open(python_file, "w") as f:
        f.write(revised_text)
Adam Dadvar
Reply   •   2 楼
Adam Dadvar    6 年前

如果你认为SDK存在一个真正的问题,你能不能 sudo cd 然后编辑它?

如果可以,那么最简单的选择就是通过每个实例。 async 并检查它是否是变量async,如果是,则替换它。

ivan_pozdeev
Reply   •   3 楼
ivan_pozdeev    6 年前

显然,这个模块不支持3.7。因此,在供应商不提供支持的情况下,您可以一如既往地进行编辑和/或分叉。

例如替换 async -gt; async_ 在模块的代码库中 Error when building TclTk in Visual Studio 2017 :

$ find /Users/mohan/growth-tools/facebook-experiment/venv/lib/python3.7/site-packages/facebookads \
! -type d -a -name '*.py' -print0 |\
xargs -0 python -c '
import sys,re
for fname in sys.argv[1:]:
 with open(fname,"rb") as f: l=f.read()
 (r,n)=re.subn(r"\b(async)\b",r"\1_",l)
 if n>0:
  with open(fname,"wb") as f: f.write(r)
'