BingAds / BingAds-Python-SDK

Other
117 stars 162 forks source link

suds-jurko dependency fails with Python Setuptools 58.0.2+ #191

Closed cyface closed 3 years ago

cyface commented 3 years ago

When installing this package, the suds-jurko package is a dependency.

That (6 year old) package tries to use the use_2to3 flag for Setuptools, which no longer works as of Setuptools version 58..0.2:

https://setuptools.readthedocs.io/en/latest/history.html#v58-0-2

https://github.com/pypa/setuptools/issues/2769

Error message is:

ERROR: Command errored out with exit status 1: error in suds-jurko setup command: use_2to3 is invalid.

graingert commented 3 years ago

fyi you should switch to https://github.com/suds-community/suds

qiyang0221 commented 3 years ago

Hey, team. I have the similar issue. Can we update the dependency for bing ads instead?

dreamca4er commented 3 years ago

I am facing the same issue, too

dannydover commented 3 years ago

I have this issue as well. Is there any known workaround?

dreamca4er commented 3 years ago

I have this issue as well. Is there any known workaround?

Downgrade setuptools<58

graingert commented 3 years ago

I have this issue as well. Is there any known workaround?

You can pip install from my pr https://github.com/BingAds/BingAds-Python-SDK/pull/192

qiyang0221 commented 3 years ago

I have this issue as well. Is there any known workaround?

You can pip install from my pr #192

Can you publish an official bing-ads version based on it? Thanks!

graingert commented 3 years ago

I have this issue as well. Is there any known workaround?

You can pip install from my pr #192

Can you publish an official bing-ads version based on it? Thanks!

I don't have permission to do that

eburdon commented 3 years ago

Any updates on this issue, specifically for

Can we update the dependency for bing ads instead?

I'm seeing the same error in suds-jurko setup command: use_2to3 is invalid. in the latest github CI runner.

Note that it seemed to be fine with

graingert commented 3 years ago

@eburdon did you try installing from my PR?

eburdon commented 3 years ago

It would be preferable to update from official master

qitia commented 3 years ago

@graingert Using suds-community will introduce other issues especially for the bulk mapping. I will recommend to downgrade setuptools to install bingads sdk as workaround. Do you see any issue with doing that?

I will discuss internally within team on the long term solution.

dannydover commented 3 years ago

@qitia Given that setuptools is a dependency of suds-jurko, and suds-jurko is a dependency of the BingAds SDK, how exactly do I implement the workaround you recommended when including BingAds as a dependency in my app?

If I specify an older version of setuptools in the requirements file of my app, won't BingAds overwrite that with its own requirements list (which includes a later version of setuptools)?

qitia commented 3 years ago

@dannydover right we need to specify which setuptools version can supported in the bingads package in next release. As of now, I am afraid you need to install the requirements manually.

Greta991 commented 3 years ago

Hi, i have deployed my application on Google App Engine that uses setuptools version 58 as built-in library. There is no way to downgrade setuptools. Will you update the BingAds library?

jason-precis commented 3 years ago

Yeah, same issue as @Greta991, and will be an issue for any case where some build process or tool is being used that a developer can't specify older versions of setuptools in. In this case the buildpacks used in Google App Engine - effectively failing all new builds/deployments for Google App Engine apps using the bingads library. So if a CI/CD or build tool like buildpacks doesn't support specifying a setuptools version or using an outdated build environment, new builds in that system will then fail as the build env will use a modern version of setuptools that doesn't support the depreciated "use_2to3" feature used in suds-jurko.

qitia commented 3 years ago

we are working on a new release, please expect version 13.0.12 within couple of days.

Greta991 commented 3 years ago

@qitia Ok thank you.

niraajrp commented 3 years ago

Hi, i have deployed my application on Google App Engine that uses setuptools version 58 as built-in library. There is no way to downgrade setuptools. Will you update the BingAds library?

yes, same issue with Azure Function Apps

niraajrp commented 3 years ago

we are working on a new release, please expect version 13.0.12 within couple of days.

@qitia any update on the version 13.0.12 ?

qitia commented 3 years ago

we published a new version 13.0.11.1 just now. Please give it a try.

Greta991 commented 3 years ago

we published a new version 13.0.11.1 just now. Please give it a try.

Hi, i update new version but the error is the same.

ERROR: Command errored out with exit status 1: command: /layers/google.python.pip/pip/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-heyiwhye/suds-jurko/setup.py'"'"'; __file__='"'"'/tmp/pip-install-heyiwhye/suds-jurko/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', op en)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-y6zqoxyr cwd: /tmp/pip-install-heyiwhye/suds-jurko/ Complete output (1 lines): error in suds-jurko setup command: use_2to3 is invalid.

qitia commented 3 years ago

hi @Greta991 it is wired, as you can see we are not depend on suds-jurko any more... below is the logs I try from my local and we can see it works as expected.(1, I install 13.0.11; 2, upgarde setuptools; 3, upgrade bingads sdk to 13.0.11.1)

PS E:\code\adsappsmt\private\BingAdsApiSDK\python> C:\python375\Scripts\pip install bingads==13.0.11 WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Collecting bingads==13.0.11 Using cached bingads-13.0.11.zip (443 kB) Collecting suds-jurko==0.6.0 Using cached suds-jurko-0.6.zip (255 kB) Requirement already satisfied: future in c:\python375\lib\site-packages (from bingads==13.0.11) (0.16.0) Requirement already satisfied: six in c:\python375\lib\site-packages (from bingads==13.0.11) (1.11.0) Requirement already satisfied: requests in c:\python375\lib\site-packages (from bingads==13.0.11) (2.18.4) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\python375\lib\site-packages (from requests->bingads==13.0.11) (3.0.4) Requirement already satisfied: idna<2.7,>=2.5 in c:\python375\lib\site-packages (from requests->bingads==13.0.11) (2.6) Requirement already satisfied: urllib3<1.23,>=1.21.1 in c:\python375\lib\site-packages (from requests->bingads==13.0.11) (1.22) Requirement already satisfied: certifi>=2017.4.17 in c:\python375\lib\site-packages (from requests->bingads==13.0.11) (2018.4.16) Using legacy 'setup.py install' for bingads, since package 'wheel' is not installed. Using legacy 'setup.py install' for suds-jurko, since package 'wheel' is not installed. WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Installing collected packages: suds-jurko, bingads Running setup.py install for suds-jurko ... done Running setup.py install for bingads ... done WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Successfully installed bingads-13.0.11 suds-jurko-0.6 WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) PS E:\code\adsappsmt\private\BingAdsApiSDK\python> C:\python375\Scripts\pip install --upgrade setuptools==58.2.0 WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Collecting setuptools==58.2.0 Downloading setuptools-58.2.0-py3-none-any.whl (946 kB) |████████████████████████████████| 946 kB ... WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Installing collected packages: setuptools Attempting uninstall: setuptools WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Found existing installation: setuptools 57.5.0 Uninstalling setuptools-57.5.0: Successfully uninstalled setuptools-57.5.0 WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Successfully installed setuptools-58.2.0 WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) PS E:\code\adsappsmt\private\BingAdsApiSDK\python> PS E:\code\adsappsmt\private\BingAdsApiSDK\python> PS E:\code\adsappsmt\private\BingAdsApiSDK\python> C:\python375\Scripts\pip install --upgrade bingads==13.0.11.1 WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Collecting bingads==13.0.11.1 Downloading bingads-13.0.11.1.zip (445 kB) |████████████████████████████████| 445 kB 6.8 MB/s Collecting suds-community>=1.0.0b1 Using cached suds_community-1.0.0b1-py3-none-any.whl (144 kB) Requirement already satisfied: future in c:\python375\lib\site-packages (from bingads==13.0.11.1) (0.16.0) Requirement already satisfied: six in c:\python375\lib\site-packages (from bingads==13.0.11.1) (1.11.0) Requirement already satisfied: requests in c:\python375\lib\site-packages (from bingads==13.0.11.1) (2.18.4) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:\python375\lib\site-packages (from requests->bingads==13.0.11.1) (3.0.4) Requirement already satisfied: idna<2.7,>=2.5 in c:\python375\lib\site-packages (from requests->bingads==13.0.11.1) (2.6) Requirement already satisfied: urllib3<1.23,>=1.21.1 in c:\python375\lib\site-packages (from requests->bingads==13.0.11.1) (1.22) Requirement already satisfied: certifi>=2017.4.17 in c:\python375\lib\site-packages (from requests->bingads==13.0.11.1) (2018.4.16) Using legacy 'setup.py install' for bingads, since package 'wheel' is not installed. WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Installing collected packages: suds-community, bingads Attempting uninstall: bingads WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Found existing installation: bingads 13.0.11 Uninstalling bingads-13.0.11: Successfully uninstalled bingads-13.0.11 Running setup.py install for bingads ... done WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) Successfully installed bingads-13.0.11.1 suds-community-1.0.0b1 WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ip (c:\python375\lib\site-packages) WARNING: Ignoring invalid distribution -ingads (c:\python375\lib\site-packages) PS E:\code\adsappsmt\private\BingAdsApiSDK\python>

Greta991 commented 3 years ago

Hi @qitia, this is my log (i tried in local).

>pip install bingads==13.0.11
Collecting bingads==13.0.11
  Using cached bingads-13.0.11.zip (443 kB)
Collecting suds-jurko==0.6.0
  Using cached suds-jurko-0.6.zip (255 kB)
    ERROR: Command errored out with exit status 1:
     command: 'c:\users\G\documents\env\scripts\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\G\\AppData\\Local\\Temp\\pip-install-zbb8gm2r\\suds-jurko_6a6f7432567b4177b39f8dea598d0876\\setup.py'"'"'
; __file__='"'"'C:\\Users\\G\\AppData\\Local\\Temp\\pip-install-zbb8gm2r\\suds-jurko_6a6f7432567b4177b39f8dea598d0876\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(c
ode, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\G\AppData\Local\Temp\pip-pip-egg-info-3ykc9ewj'
         cwd: C:\Users\G\AppData\Local\Temp\pip-install-zbb8gm2r\suds-jurko_6a6f7432567b4177b39f8dea598d0876\
    Complete output (1 lines):
    error in suds-jurko setup command: use_2to3 is invalid.
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/d0/88/f3bed9b494e0dae26bd55e5f3d527b8244208125024727267e8109956a11/suds-jurko-0.6.zip#sha256=1cb7252cb13018fc32887c3a834ed7c6648a5b5c4c159be5806da2e1785399e8 (from https://pypi.org/simple/suds-jurko/). Comman
d errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  Using cached suds-jurko-0.6.tar.bz2 (143 kB)
    ERROR: Command errored out with exit status 1:
     command: 'c:\users\G\documents\env\scripts\python.exe' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\G\\AppData\\Local\\Temp\\pip-install-zbb8gm2r\\suds-jurko_e5b1fa6afdfa44fda0fa2a8880b41b0d\\setup.py'"'"'
; __file__='"'"'C:\\Users\\G\\AppData\\Local\\Temp\\pip-install-zbb8gm2r\\suds-jurko_e5b1fa6afdfa44fda0fa2a8880b41b0d\\setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(c
ode, __file__, '"'"'exec'"'"'))' egg_info --egg-base 'C:\Users\G\AppData\Local\Temp\pip-pip-egg-info-dwtoacco'
         cwd: C:\Users\G\AppData\Local\Temp\pip-install-zbb8gm2r\suds-jurko_e5b1fa6afdfa44fda0fa2a8880b41b0d\
    Complete output (1 lines):
    error in suds-jurko setup command: use_2to3 is invalid.
    ----------------------------------------
WARNING: Discarding https://files.pythonhosted.org/packages/bd/6f/54fbf0999a606680d27c69b1ad12dfff62768ecb9fe48524cebda6eb4423/suds-jurko-0.6.tar.bz2#sha256=29edb72fd21e3044093d86f33c66cf847c5aaab26d64cb90e69e528ef014e57f (from https://pypi.org/simple/suds-jurko/). Co
mmand errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Could not find a version that satisfies the requirement suds-jurko==0.6.0 (from bingads)
ERROR: No matching distribution found for suds-jurko==0.6.0
qitia commented 3 years ago

@Greta991 I think you should try version 13.0.11.1, don't you? pip install bingads==13.0.11.1

niraajrp commented 3 years ago

we published a new version 13.0.11.1 just now. Please give it a try.

thanks @qitia

works well with Azure Function Apps.

eburdon commented 3 years ago

Thanks @qitia ! Latest version resolved issues with our github ci runner.

Greta991 commented 3 years ago

@Greta991 I think you should try version 13.0.11.1, don't you? pip install bingads==13.0.11.1

@qitia Yes, i do. This is my requirements.txt which i upload on App Engine.

aiohttp==3.7.4.post0 async-timeout==3.0.1 attrs==21.2.0 beautifulsoup4==4.10.0 bingads==13.0.11.1 bs4==0.0.1 cached-property==1.5.2 cachetools==4.2.4 certifi==2021.10.8 chardet==3.0.4 charset-normalizer==2.0.7 click==8.0.3 colorama==0.4.4 curlify==2.2.1 Django==2.2.10 Flask==1.1.1 future==0.17.1 google-api-core==1.31.3 google-api-python-client==1.7.11 google-auth==1.35.0 google-auth-httplib2==0.1.0 google-auth-oauthlib==0.4.6 google-cloud-bigquery==1.22.0 google-cloud-core==1.7.2 google-cloud-error-reporting==0.33.0 google-cloud-logging==1.14.0 google-cloud-resource-manager==0.30.0 google-cloud-storage==1.23.0 google-resumable-media==0.5.1 googleads==21.0.0 googleapis-common-protos==1.53.0 grpcio==1.41.0 httplib2==0.20.1 idna==2.8 importlib-metadata==4.8.1 isodate==0.6.0 itsdangerous==2.0.1 Jinja2==3.0.2 lxml==4.6.3 MarkupSafe==2.0.1 multidict==5.2.0 mysqlclient==1.4.6 numpy==1.17.1 oauth2client==4.1.3 oauthlib==3.1.1 packaging==21.0 pandas==0.25.3 platformdirs==2.4.0 protobuf==3.17.3 pyasn1==0.4.8 pyasn1-modules==0.2.8 pycountry==20.7.3 PyMySQL==1.0.2 pyparsing==2.4.7 python-dateutil==2.8.2 pytz==2019.2 PyYAML==5.4.1 requests==2.22.0 requests-file==1.5.1 requests-oauthlib==1.3.0 requests-toolbelt==0.9.1 rsa==4.7.2 six==1.16.0 soupsieve==2.2.1 SQLAlchemy==1.3.13 sqlparse==0.4.2 suds-community==1.0.0b1 suds-jurko==0.6 typing-extensions==3.10.0.2 uritemplate==3.0.1 urllib3==1.25.11 Werkzeug==2.0.2 xmltodict==0.12.0 yarl==1.7.0 zeep==4.1.0 zipp==3.6.0

but despite the update it keeps giving the error Collecting suds-jurko==0.6 Downloading suds-jurko-0.6.tar.bz2 (143 kB) ERROR: Command errored out with exit status 1: command: /layers/google.python.pip/pip/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ahnlpnex/suds-jurko/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ahnlpnex/suds-jurko/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', op en)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-1hq_v6vg cwd: /tmp/pip-install-ahnlpnex/suds-jurko/ Complete output (1 lines): error in suds-jurko setup command: use_2to3 is invalid.

graingert commented 3 years ago

@Greta991 I think you should try version 13.0.11.1, don't you? pip install bingads==13.0.11.1

@qitia Yes, i do. This is my requirements.txt which i upload on App Engine.

aiohttp==3.7.4.post0 async-timeout==3.0.1 attrs==21.2.0 beautifulsoup4==4.10.0 bingads==13.0.11.1 bs4==0.0.1 cached-property==1.5.2 cachetools==4.2.4 certifi==2021.10.8 chardet==3.0.4 charset-normalizer==2.0.7 click==8.0.3 colorama==0.4.4 curlify==2.2.1 Django==2.2.10 Flask==1.1.1 future==0.17.1 google-api-core==1.31.3 google-api-python-client==1.7.11 google-auth==1.35.0 google-auth-httplib2==0.1.0 google-auth-oauthlib==0.4.6 google-cloud-bigquery==1.22.0 google-cloud-core==1.7.2 google-cloud-error-reporting==0.33.0 google-cloud-logging==1.14.0 google-cloud-resource-manager==0.30.0 google-cloud-storage==1.23.0 google-resumable-media==0.5.1 googleads==21.0.0 googleapis-common-protos==1.53.0 grpcio==1.41.0 httplib2==0.20.1 idna==2.8 importlib-metadata==4.8.1 isodate==0.6.0 itsdangerous==2.0.1 Jinja2==3.0.2 lxml==4.6.3 MarkupSafe==2.0.1 multidict==5.2.0 mysqlclient==1.4.6 numpy==1.17.1 oauth2client==4.1.3 oauthlib==3.1.1 packaging==21.0 pandas==0.25.3 platformdirs==2.4.0 protobuf==3.17.3 pyasn1==0.4.8 pyasn1-modules==0.2.8 pycountry==20.7.3 PyMySQL==1.0.2 pyparsing==2.4.7 python-dateutil==2.8.2 pytz==2019.2 PyYAML==5.4.1 requests==2.22.0 requests-file==1.5.1 requests-oauthlib==1.3.0 requests-toolbelt==0.9.1 rsa==4.7.2 six==1.16.0 soupsieve==2.2.1 SQLAlchemy==1.3.13 sqlparse==0.4.2 suds-community==1.0.0b1 suds-jurko==0.6 typing-extensions==3.10.0.2 uritemplate==3.0.1 urllib3==1.25.11 Werkzeug==2.0.2 xmltodict==0.12.0 yarl==1.7.0 zeep==4.1.0 zipp==3.6.0

but despite the update it keeps giving the error Collecting suds-jurko==0.6 Downloading suds-jurko-0.6.tar.bz2 (143 kB) ERROR: Command errored out with exit status 1: command: /layers/google.python.pip/pip/bin/python3 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ahnlpnex/suds-jurko/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ahnlpnex/suds-jurko/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', op en)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-1hq_v6vg cwd: /tmp/pip-install-ahnlpnex/suds-jurko/ Complete output (1 lines): error in suds-jurko setup command: use_2to3 is invalid.

You have suds-jurko=0.6 in your requirements.txt

Greta991 commented 3 years ago

@qitia sorry i didn't notice! Thank you!

graingert commented 3 years ago

@qitia sorry i didn't notice! Thank you!

This is off topic but you might prefer to use pip-compile to manage pinning your requirements and tertiary requirements to avoid this problem happening to you again

https://github.com/jazzband/pip-tools#example-usage-for-pip-compile