Poetry: always have to install setuptools manually in CI - pip

Im building my Circle CI flow with Poetry. Everything works well, except the thing that i should install setuptools always manually. It looks like this:
steps:
- checkout
- restore_cache:
keys:
- pip-{{ checksum "poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
- run:
name: install dependencies
command: |
poetry config virtualenvs.in-project true
poetry config virtualenvs.path /project
poetry run pip install --upgrade pip setuptools
poetry install
poetry show -v
steps:
- run:
name: pytest
command: |
poetry run pip install setuptools
poetry run pytest -sv tests/unittests
If im removing manual installation of setuptools, installing of some packages are failing with the same traceback. Example:
Installing googleads (29.0.0): Failed
EnvCommandError
Command ['/home/circleci/project/.venv/bin/pip', 'install', '--no-deps', '/home/circleci/.cache/pypoetry/artifacts/05/59/83/1fa9c7bc74df8656d6fa40f159fa169c10a9a110501f2ec8260c8cd3e1/googleads-29.0.0.tar.gz'] errored with the following return code 1, and output:
Processing /home/circleci/.cache/pypoetry/artifacts/05/59/83/1fa9c7bc74df8656d6fa40f159fa169c10a9a110501f2ec8260c8cd3e1/googleads-29.0.0.tar.gz
ERROR: Command errored out with exit status 1:
command: /home/circleci/project/.venv/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-req-build-e9n99b4s/setup.py'"'"'; __file__='"'"'/tmp/pip-req-build-e9n99b4s/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-8t_uwvq3
cwd: /tmp/pip-req-build-e9n99b4s/
Complete output (3 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'setuptools'
----------------------------------------
WARNING: Discarding file:///home/circleci/.cache/pypoetry/artifacts/05/59/83/1fa9c7bc74df8656d6fa40f159fa169c10a9a110501f2ec8260c8cd3e1/googleads-29.0.0.tar.gz. Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
WARNING: You are using pip version 21.2.4; however, version 22.3.1 is available.
You should consider upgrading via the '/home/circleci/project/.venv/bin/python -m pip install --upgrade pip' command.
at /usr/local/lib/python3.8/site-packages/poetry/utils/env.py:1183 in _run
1179│ output = subprocess.check_output(
1180│ cmd, stderr=subprocess.STDOUT, **kwargs
1181│ )
1182│ except CalledProcessError as e:
→ 1183│ raise EnvCommandError(e, input=input_)
1184│
1185│ return decode(output)
1186│
1187│ def execute(self, bin, *args, **kwargs):
Tests are also failing if manual installation of setuptools gonna be removed, if i will not install setuptools manually on the test step. All tests are also failing with the same trace:
collection failure
ImportError while importing test module '/home/circleci/project/tests/unittests/hsplib/test_spark.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
/usr/local/lib/python3.8/importlib/__init__.py:127: in import_module
return _bootstrap._gcd_import(name[level:], package, level)
tests/unittests/hsplib/test_spark.py:9: in <module>
from tests.unittests.testlib.asserts import assert_df_equal_2
tests/unittests/testlib/asserts.py:5: in <module>
import chispa
.venv/lib/python3.8/site-packages/chispa/__init__.py:28: in <module>
from .dataframe_comparer import DataFramesNotEqualError, assert_df_equality, assert_approx_df_equality
.venv/lib/python3.8/site-packages/chispa/dataframe_comparer.py:1: in <module>
from chispa.prettytable import PrettyTable
.venv/lib/python3.8/site-packages/chispa/prettytable.py:44: in <module>
import pkg_resources
E ModuleNotFoundError: No module named 'pkg_resources'
I want to get rid from this manual setuptools installation, but i cant understand whats wrong with it. It feels like a code smell. What i tryed:
Adding setuptools as one of the dependencies in pyproject.toml file - no effect
Adding setuptools to build-system requires - also no effect.
Adding virtualenvs.options.no-setuptools = false to poetry config. It should be by default, but i tryed to setup it manually. No effect.
The only issue, that looks like a similar one that i found is this one:
https://github.com/python-poetry/poetry/issues/4242
But there is still no answer there what to do.
My poetry version 1.3.2
pip version 22.0.4

Seems like your project depends on some libraries that are poorly packaged. You should raise up the issue towards their maintainers on their issue trackers:
https://github.com/googleads/googleads-python-lib/issues
https://github.com/MrPowers/chispa/issues

Related

pip install xlwings fails

I'm on MacOS Mojave Version 10.14.6, 2.8 GHz Intel Core i7 processor. Python version: 2.7.
"pip install xlwings" fails for me. I have tried to resolve this by upgrading setuptools with pip install -U setuptools
However, this does not fix the issue. The full error message for "pip install xlwings" is as follows:
Collecting xlwings
Using cached xlwings-0.16.6.tar.gz (634 kB)
Collecting psutil>=2.0.0
Using cached psutil-5.9.0.tar.gz (478 kB)
Collecting appscript>=1.0.1
Using cached appscript-1.2.0.tar.gz (289 kB)
ERROR: Command errored out with exit status 1:
command: /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/private/var/folders/hm/pt6_h7xs52z7_89jqr614q300000gn/T/pip-install-KTcWya/appscript/setup.py'"'"'; __file__='"'"'/private/var/folders/hm/pt6_h7xs52z7_89jqr614q300000gn/T/pip-install-KTcWya/appscript/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/hm/pt6_h7xs52z7_89jqr614q300000gn/T/pip-pip-egg-info-fmr2EU
cwd: /private/var/folders/hm/pt6_h7xs52z7_89jqr614q300000gn/T/pip-install-KTcWya/appscript/
Complete output (5 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/private/var/folders/hm/pt6_h7xs52z7_89jqr614q300000gn/T/pip-install-KTcWya/appscript/setup.py", line 8, in <module>
raise RuntimeError("Python 3.x required.")
RuntimeError: Python 3.x required.
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
xlwings declares appscript as a dependency but it doesn't limit version; appscript doesn't properly declare Python version compatibility (xlwings does it properly) so pip is trying to install the latest version which is not compatible with Python 2.7. Try to limit versions this way:
pip install "xlwings<0.17" "appscript<1.2"

Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output, while installing: drun-airsim-client by pip

I'm having a problem to install the drun-airsim-client package (https://pypi.org/project/drun-airsim-client/). I am using a virtual environment and my python version is 3.8.10, my OS is Ubuntu 20.04. This is the log for the error.
ERROR: Command errored out with exit status 1:
command: '/home/USER/DRONE/venv/bin/python3' -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-e0459yt7/airsim/setup.py'"'"'; __file__='"'"'/tmp/pip-install-e0459yt7/airsim/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 /tmp/pip-install-e0459yt7/airsim/pip-egg-info
cwd: /tmp/pip-install-e0459yt7/airsim/
Complete output (11 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-e0459yt7/airsim/setup.py", line 2, in <module>
from airsim import __version__
File "/tmp/pip-install-e0459yt7/airsim/airsim/__init__.py", line 1, in <module>
from .client import *
File "/tmp/pip-install-e0459yt7/airsim/airsim/client.py", line 3, in <module>
from .utils import *
File "/tmp/pip-install-e0459yt7/airsim/airsim/utils.py", line 1, in <module>
import numpy as np #pip install numpy
ModuleNotFoundError: No module named 'numpy'
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
Can you please suggest me a solution, I have never faced this problem before with other packages & I have look for a solution but I still have the same error.
Thanks in advance.
It's a bug in airsim package: its setup.py imports airsim module and the module imports everything else. That is, setup.py imports all the dependencies before they are installed.
Please report the bug.
If you run !pip install msgpack-rpc-python before it should work

How to use pip-tools to install from a github repo?

Here is a line in a req.in file (for pip-compile) to get a package from a github repository:
-e git://github.com/dfrankow/django-editorjs-fields.git#egg=django-editorjs-fields
Running pip-compile req.in gives a req.txt with
-e git+git://github.com/dfrankow/django-editorjs-fields.git#egg=django-editorjs-fields
Using pip to install (pip install -r req.txt) gives this error:
ERROR: Command errored out with exit status 1:
command: .../.venv/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'.../.venv/src/django-editorjs-fields/setup.py'"'"'; __file__='"'"'.../.venv/src/django-editorjs-fields/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps
cwd: .../.venv/src/django-editorjs-fields/
Complete output (3 lines):
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'setuptools'
I have setuptools (and in fact all the other libraries) installed. See, no errors:
$ .venv/bin/python -c 'import io, os, sys, setuptools, tokenize;'
$
If I install directly (without the -e) it works:
$ pip install git+git://github.com/dfrankow/django-editorjs-fields.git#egg=django-editorjs-fields
... (works)
But when I take the -e out of req.in, pip-compile complains:
$ pip-compile req.in
...
pip._internal.exceptions.InstallationError: Invalid requirement: 'git://github.com/dfrankow/django-editorjs-fields.git#egg=django-editorjs-fields' (from line 1 of req.in)
Hint: It looks like a path. File 'git://github.com/dfrankow/django-editorjs-fields.git#egg=django-editorjs-fields' does not exist.
What the heck, I'm trapped.
How do I put a github repo into req.in, compile it with pip-compile into req.txt, and pip install req.txt without errors?
I need it to work automatically because we have a toolchain that depends on it (github workflows, dependabot, ..).
I'm using python 3.9.1_2, pip 21.1.2, pip-tools 6.2.0 on OS X. Also happened with pip-tools 6.0.1 (not surprising).

Receiving an error when installing MariaDB via pip3 [duplicate]

This question already has answers here:
Python MariaDB pip install failed, missing mariadb_config
(3 answers)
Closed 2 years ago.
Im receiving an error when installing mairadb via pip3. Below is the command and error.
sudo pip3 install mariadb
------------------------------------------------------------------
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting mariadb
Using cached mariadb-1.0.0.tar.gz (78 kB)
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python3.8 -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-z5vslgxx/mariadb/setup.py'"'"'; __file__='"'"'/tmp/pip-install-z5vslgxx/mariadb/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 /tmp/pip-pip-egg-info-hfv4vge6
cwd: /tmp/pip-install-z5vslgxx/mariadb/
Complete output (12 lines):
/bin/sh: 1: mariadb_config: not found
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-z5vslgxx/mariadb/setup.py", line 26, in <module>
cfg = get_config(options)
File "/tmp/pip-install-z5vslgxx/mariadb/mariadb_posix.py", line 49, in get_config
cc_version = mariadb_config(config_prg, "cc_version")
File "/tmp/pip-install-z5vslgxx/mariadb/mariadb_posix.py", line 26, in mariadb_config
raise EnvironmentError(
OSError: mariadb_config not found.
Please make sure, that MariaDB Connector/C is installed on your system, edit the configuration file 'site.cfg' and set the 'mariadb_config'
option, which should point to the mariadb_config utility.
----------------------------------------
ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
I have updated setuptools for pip via sudo pip3 install --upgrade setuptools to no avail. This error also occurs when trying to install most sql related modules for example mysql.
I am now able to install MariaDB 1.0.0 connector with no issues now. If you are receiving an OS error, install the mariadbclient-dev package with sudo apt-get install libmariadbclient-dev then you can install with pip3 install mariadb.

"python setup.py egg_info" failed with error code 1 when installing autosub

I tried to install Autosub but it shown error, and I cannot find a solution that work for me.
I already installed ffmpeg that required by Autosub and added path for it.
I also upgraded my setuptools.
C:\WINDOWS\system32>pip install autosub
Collecting autosub
Using cached autosub-0.3.11.tar.gz
Collecting google-api-python-client>=1.4.2 (from autosub)
Using cached google_api_python_client-1.6.2-py2.py3-none-any.whl
Requirement already satisfied: requests>=2.3.0 in c:\program files\python36\lib\site-packages (from autosub)
Collecting pysrt>=1.0.1 (from autosub)
Using cached pysrt-1.1.1.tar.gz
Collecting progressbar>=2.3 (from autosub)
Using cached progressbar-2.3.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\CHEKWE~1\AppData\Local\Temp\pip-build-4wnmhm6k\progressbar\setup.py", line 5, in <module>
import progressbar
File "C:\Users\CHEKWE~1\AppData\Local\Temp\pip-build-4wnmhm6k\progressbar\progressbar\__init__.py", line 59, in <module>
from progressbar.widgets import *
File "C:\Users\CHEKWE~1\AppData\Local\Temp\pip-build-4wnmhm6k\progressbar\progressbar\widgets.py", line 121, in <module>
class FileTransferSpeed(Widget):
File "c:\program files\python36\lib\abc.py", line 133, in __new__
cls = super().__new__(mcls, name, bases, namespace)
ValueError: 'format' in __slots__ conflicts with class variable
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\CHEKWE~1\AppData\Local\Temp\pip-build-4wnmhm6k\progressbar\
I found another answer that said enter easy_install -U setuptools but shown error too. (cmd is run as admin)
C:\WINDOWS\system32>easy_install -U setuptools
Searching for setuptools
Reading https://pypi.python.org/simple/setuptools/
Best match: setuptools 35.0.1
Processing setuptools-35.0.1-py3.6.egg
setuptools 35.0.1 is already the active version in easy-install.pth
Installing easy_install-script.py script to c:\program files\python36\Scripts
Installing easy_install.exe script to c:\program files\python36\Scripts
error: [WinError 5] Access is denied: 'c:\\program files\\python36\\Scripts\\easy_install.exe'
Any help would be appreciated.
-Error install pip
"python setup.py egg_info"
Solution
Install Python 2.7 uninstall 3.x
https://github.com/agermanidis/autosub/issues/31
If you run into this problem while running an Alpine Docker container, which was the case for me. Try adding the following line to your Dockerfile to install required dependencies.
RUN apk update && apk add postgresql-dev gcc python3-dev musl-dev

Resources