Ошибка установки: pipenv install google-ads (TypeError: ожидаемая строка или байтовый объект)

pipenv install google-ads выдает ошибку:

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
This is likely caused by a bug in google-ads. Report this to its maintainers.
✘ Installation Failed

Вот и все:

% pipenv install google-ads
Creating a virtualenv for this project...
Pipfile: /Users/ralf/code/test_snippets/20-12-10_google_ads/Pipfile
Using /usr/local/bin/python3.9 (3.9.0) to create virtualenv...
⠦ Creating virtual environment...created virtual environment CPython3.9.0.final.0-64 in 325ms
  creator CPython3Posix(dest=/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj, clear=False, global=False)
  seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/Users/ralf/Library/Application Support/virtualenv)
    added seed packages: pip==20.2.4, setuptools==50.3.2, wheel==0.35.1
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

✔ Successfully created virtual environment! 
Virtualenv location: /Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj
Installing google-ads...
Error:  An error occurred while installing google-ads!
Error text: Processing /Users/ralf/Library/Caches/pipenv/wheels/0a/09/22/d4a45ac4200d9c68a5215e554d4181b51af2c01b4f16232b5c/google_ads-8.0.0-py3-none-any.whl
Collecting googleapis-common-protos<2.0.0,>=1.5.8
  Using cached googleapis_common_protos-1.52.0-py2.py3-none-any.whl (100 kB)
Collecting google-auth-oauthlib<1.0.0,>=0.3.0
  Using cached google_auth_oauthlib-0.4.2-py2.py3-none-any.whl (18 kB)
Collecting protobuf<4.0.0,>=3.13.0
  Using cached protobuf-3.14.0-py2.py3-none-any.whl (173 kB)
Collecting google-api-core<2.0.0,>=1.14.0
  Using cached google_api_core-1.23.0-py2.py3-none-any.whl (91 kB)
Processing /Users/ralf/Library/Caches/pipenv/wheels/69/60/81/5cd74b8ee068fbe9e04ca0d53148f28f5c6e2c5b177d5dd622/PyYAML-5.3.1-cp39-cp39-macosx_11_0_x86_64.whl
Requirement already satisfied, skipping upgrade: setuptools>=40.3.0 in /Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages (from google-ads->-r /var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pipenv-p0t2erav-requirements/pipenv-xefzspt6-requirement.txt (line 1)) (50.3.2)
Collecting grpcio<2.0.0,>=1.33.2
  Using cached grpcio-1.34.0.tar.gz (21.0 MB)

    ERROR: Command errored out with exit status 1:
     command: /Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-install-woj2xbsv/grpcio/setup.py'"'"'; __file__='"'"'/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-install-woj2xbsv/grpcio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-pip-egg-info-d7h_fmnt
         cwd: /private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-install-woj2xbsv/grpcio/
    Complete output (9 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-install-woj2xbsv/grpcio/setup.py", line 359, in <module>
        if mac_target and (pkg_resources.parse_version(mac_target) <
      File "/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages/pkg_resources/__init__.py", line 113, in parse_version
        return packaging.version.Version(v)
      File "/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py", line 275, in __init__
        match = self._regex.search(version)
    TypeError: expected string or bytes-like object
    ----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

This is likely caused by a bug in google-ads. Report this to its maintainers.
✘ Installation Failed 

Я мало что знаю о pipenv, я просто использую его — пока без проблем. Теперь я начал с нуля и раньше бегал brew update, brew outdated и brew upgrade.

Как мне лучше всего сообщить об этом его сопровождающим и что означает «это», Google Ads или Pipenv? Есть ли что-то еще, что я мог бы сделать?

Обновлять:

Следуя совету tai271828, вот дополнительная информация о системе, которую я использую:

  • Я только что обновился до Mac OS 11.1 (20C69) (так что, вероятно, это было 11.01)
  • python --version --> Python 2.7.16
  • which python --> /usr/bin/python
  • which python3 --> /usr/local/bin/python3
  • python3 --version --> Python 3.9.0
  • which pipenv --> /usr/local/bin/pipenv
  • which pip --> /usr/local/bin/pip
  • which pip3 --> /usr/local/bin/pip3

Я использовал homebrew для установки Python 3, а затем pip3 install pipenv.

Обновление 2:

С просто pip (вместо pipenv) я сначала столкнулся с той же ошибкой, но после обновления pip все заработало нормально. Это был мой вклад:

python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install google-ads

Обновление 3:

Я попытался последовать совету tai271828, чтобы обновить свой pip в моем окружении pipenv перед установкой пакета google-ads. Это были мои команды:

pipenv --rm
pipenv shell
pip insall --upgrade pip
exit
pipenv install google-ads

Сообщение об ошибке по-прежнему выглядит так:

Installing google-ads...
Adding google-ads to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock (16c839) out of date, updating to (f55075)...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✘ Locking Failed! 
ERROR:pip.subprocessor:Command errored out with exit status 1:
 command: /Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/setup.py'"'"'; __file__='"'"'/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/pip-egg-info
     cwd: /private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/
Complete output (9 lines):
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/private/var/folders/nc/s6kd50kj3gdg81vhy9qwddkw0000gn/T/pip-resolver-p0oskrkm/grpcio/setup.py", line 359, in <module>
    if mac_target and (pkg_resources.parse_version(mac_target) <
  File "/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages/pkg_resources/__init__.py", line 113, in parse_version
    return packaging.version.Version(v)
  File "/Users/ralf/.local/share/virtualenvs/20-12-10_google_ads-S7vGVfKj/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py", line 275, in __init__
    match = self._regex.search(version)
TypeError: expected string or bytes-like object
----------------------------------------
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 764, in <module>
    main()
  File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 758, in main
    _main(parsed.pre, parsed.clear, parsed.verbose, parsed.system, parsed.write,
  File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 741, in _main
    resolve_packages(pre, clear, verbose, system, write, requirements_dir, packages, dev)
  File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 702, in resolve_packages
    results, resolver = resolve(
  File "/usr/local/lib/python3.9/site-packages/pipenv/resolver.py", line 684, in resolve
    return resolve_deps(
  File "/usr/local/lib/python3.9/site-packages/pipenv/utils.py", line 1395, in resolve_deps
    results, hashes, markers_lookup, resolver, skipped = actually_resolve_deps(
  File "/usr/local/lib/python3.9/site-packages/pipenv/utils.py", line 1108, in actually_resolve_deps
    resolver.resolve()
  File "/usr/local/lib/python3.9/site-packages/pipenv/utils.py", line 823, in resolve
    results = self.resolver.resolve(max_rounds=environments.PIPENV_MAX_ROUNDS)
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/resolver.py", line 180, in resolve
    has_changed, best_matches = self._resolve_one_round()
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/resolver.py", line 268, in _resolve_one_round
    their_constraints.extend(self._iter_dependencies(best_match))
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/resolver.py", line 383, in _iter_dependencies
    dependencies = self.repository.get_dependencies(ireq)
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 229, in get_dependencies
    legacy_results = self.get_legacy_dependencies(ireq)
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 350, in get_legacy_dependencies
    results, ireq = self.resolve_reqs(
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/piptools/repositories/pypi.py", line 306, in resolve_reqs
    results = resolver._resolve_one(reqset, ireq)
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/legacy_resolve.py", line 339, in _resolve_one
    abstract_dist = self._get_abstract_dist_for(req_to_install)
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/legacy_resolve.py", line 287, in _get_abstract_dist_for
    abstract_dist = self.preparer.prepare_linked_requirement(req)
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/operations/prepare.py", line 508, in prepare_linked_requirement
    abstract_dist = _get_prepared_distribution(
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/operations/prepare.py", line 95, in _get_prepared_distribution
    abstract_dist.prepare_distribution_metadata(finder, build_isolation)
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/distributions/sdist.py", line 40, in prepare_distribution_metadata
    self.req.prepare_metadata()
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/req/req_install.py", line 564, in prepare_metadata
    self.metadata_directory = self._generate_metadata()
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/req/req_install.py", line 538, in _generate_metadata
    return generate_metadata_legacy(
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/operations/build/metadata_legacy.py", line 115, in generate_metadata
    call_subprocess(
  File "/usr/local/lib/python3.9/site-packages/pipenv/patched/notpip/_internal/utils/subprocess.py", line 242, in call_subprocess
    raise InstallationError(exc_msg)
pipenv.patched.notpip._internal.exceptions.InstallationError: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

Кстати: тем временем я обновился до Python 3.9.1.

В вашем случае pip работает нормально, потому что он работает в системной среде с питоном по умолчанию (python 2.7.16) в вашей macOS. Это бесполезная информация для вашей виртуальной среды pipenv, построенной поверх python 3.9, потому что env python 2 и 3 могут сильно отличаться.

tai271828 16.12.2020 00:23

Кроме того, я только что попробовал установить google-ads на python 3.9 pipenv. Он хорошо работает (ubuntu-mate 18.04) для справки.

tai271828 16.12.2020 00:24

Не могли бы вы pipenv shell войти в созданную вами виртуальную среду (с Python 3.9), а затем посмотреть вывод python setup.py egg_info, предложенный в сообщении об ошибке?

tai271828 16.12.2020 00:31

Спасибо за ваши дальнейшие комментарии. Я обнаружил, что с простым «пипом» он работал после его обновления, то есть самого пипа (см. «Обновление 2» выше).

Ralf Zosel 16.12.2020 08:52

Звучит глупо, но я не нахожу журнал, который пишет pip/pipenv на моем Mac, даже после чего-то вроде pip install google-ads --log mylogifle.

Ralf Zosel 16.12.2020 09:20

Интересно, если обновленный пункт действительно поможет, два совета для справки в будущем. 1. Используйте which pip, чтобы подтвердить, что это пункт в вашем python3 venv (и не используйте /usr/local/bin/pip для системного python2). 2. если вы хотите снова использовать pipenv, вы можете обновить свой pip в своей среде pipenv перед установкой пакета google-ads.

tai271828 16.12.2020 10:54
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
6
1 857
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вы можете предоставить больше информации, чтобы людям было легче ответить на ваш вопрос, и ниже приведены некоторые примеры и предложения.

  1. Заявление «Вероятно, это вызвано ошибкой в ​​google-ads. Сообщите об этом ее сопровождающим». поднят pipenv. Это означает «пожалуйста, не сообщайте о проблеме команде разработчиков pipenv».

  2. Не спешите заявлять, что нашли ошибку: это предложение из «Как правильно задавать вопросы» Эрика Стивена Рэймонда. Вы можете проверить ссылку для более подробной информации о том, почему. Поэтому я предлагаю вам сначала изучить вашу операцию, а не связываться с Google Ads.

  3. Кажется, вы запускаете команду на Mac/OSX. Кроме того, кажется, что ваш pipenv установлен варкой. Если оба утверждения верны, то очень вероятно, что вы смешиваете системный pip и локально установленный pipenv (от brew). Это очень частая ошибка, которую допускают люди, не знакомые с тем, как работает управление пакетами Python.

    1. Таким образом, первое предложение по поиску решения — максимально подробно изучить информацию, связанную с управлением пакетами python, в вашей системе (mac/OSX). Например, выходное сообщение python --version, which python, which pip и which pipenv обычно является справкой.

    2. Если вы хотите использовать brew для управления пакетами, убедитесь, что каждый шаг, который вы использовали для установки pipenv и вашего целевого пакета, не смешивает вашу системную среду python и вашу локальную (управляемую brew или виртуальную среду python) при попытке установить разобраться в проблеме и найти решение. Например, убедитесь, что вы начинаете свою работу с «чистого» и только что заново созданного терминала. Если вы хотите использовать brew, убедитесь, что вы контролируете все через brew. Было бы плохой идеей активировать настроенную виртуальную среду Python (например, среду conda), а затем использовать brew.

    3. Я ожидаю, что люди не смогут предложить вам другие более практичные решения, пока не будет предоставлена ​​​​дополнительная информация. Удачи.

Большое спасибо за Вашу помощь! Я добавил некоторую информацию о системе, которую я использую, к моему вопросу.

Ralf Zosel 15.12.2020 10:19
Ответ принят как подходящий

Мне потребовалось некоторое время, чтобы понять это, но, похоже, это проблема pipenv под Python 3.9 (или 3.9.1) в сочетании с модулем google-ads.

Мое решение:

  1. понижение до Python 3.8.6 (Для меня, как для новичка, это было проблемой, на всякий случай, если вас это интересует: Переключение версии Python (3.9 → 3.8), установленной Homebrew)
  2. Обновление pip внутри pipenv

Я сделал это так:

pipenv shell
pip install --upgrade pip
exit

Затем это, наконец, сработало:

% pipenv install google-ads
Installing google-ads...
Adding google-ads to Pipfile's [packages]...
✔ Installation Succeeded 
Pipfile.lock not found, creating...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Building requirements...
Resolving dependencies...
✔ Success! 
Updated Pipfile.lock (aba984)!
Installing dependencies from Pipfile.lock (aba984)...
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

Ура!

У меня была похожая «настройка», и мне помогло обновление пипа внутри pipenv!

samu 04.02.2021 10:40
~/.virtualenvs/MYENVNAME/bin/python3.8 -m pip install --upgrade pip (как было указано в нижней части ошибки) помогло мне :)
Thomas David Baker 27.04.2021 02:44

Другие вопросы по теме