Skip to content

Commit

Permalink
appveyor: workaround PyYAML install problem
Browse files Browse the repository at this point in the history
`pip install pyyaml` fails in AppVeyor on 64-bit Python 3.4 with the
following message (full log is in [1]):

 | Collecting pyyaml
 |   Downloading <...>/PyYAML-5.3.1.tar.gz (269kB)
 | <...>
 | building '_yaml' extension
 | Traceback (most recent call last):
 |   <...>
 |   File "C:\Python34-x64\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall
 |     raise ValueError(str(list(result.keys())))
 | ValueError: ['path']

It is cumulative effect of several problems.

The first one is that pip does not choose a PyYAML version, which
supports given Python version (it is PyYAML 5.2, see [2]), but tries to
install a last one (it is PyYAML 5.3.1 ATM). There are PyYAML issues
[3], [4] and [5], which are not exacly about this, but looks tightly
related. Despite Python 3.4 is not officially supported in PyYAML, it
works on 3.4 in fact, so it is not the problem per se.

Next, there are no wheels for Python 3.4 for PyYAML 5.3.1 on PyPI (which
is logical), so pip downloads the source tarball and tries to build it.
And the exception shown above is raised.

It looks similar to [6], so I would guess that it is a compiler setup
problem within an AppVeyor Windows image. I started the discussion [7]
regarding it, but we need to work the problem around.

Side note: 32-bit Python 3.4 works fine, the problem appears only for
the 64-bit Python 3.4 build.

In order to workaround the compiler setup problem we can just choose a
PyYAML version for which PyPI provides wheels for the corresponding
platform / Python version / Python build. It is 5.2b1, see [8].

Python 3.4 reaches EOL 2019-03-18 with releasing 3.4.10 (see [9]). I
would not consider it as the reason to drop support of it on our side,
especially when we're tell about a library (our users has its users,
etc) and it is hard to estimate the impact. The problem we meet here is
just about a testing dependency in a particular environment. So let's
keep Python 3.4 support until there will be a better reason to stop.

[1]: https://ci.appveyor.com/project/tarantool/tarantool-python/builds/34769695/job/ww3s69pkuh1n9d1y
[2]: yaml/pyyaml#345
[3]: yaml/pyyaml#281
[4]: yaml/pyyaml#375
[5]: yaml/pyyaml#398
[6]: https://stackoverflow.com/a/43711372/1598057
[7]: http://help.appveyor.com/discussions/problems/28023
[8]: https://pypi.org/project/PyYAML/5.2b1/#files
[9]: https://www.python.org/downloads/release/python-3410/
  • Loading branch information
Totktonada committed Aug 21, 2020
1 parent 0112af2 commit 4f79627
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ environment:
- PYTHON: "C:\\Python27-x64"
- PYTHON: "C:\\Python34"
- PYTHON: "C:\\Python34-x64"
# Workaround the build problem [1] by choosing a PyYAML
# version for which PyPI provides a wheel for this platform
# and Python version / build.
#
# [1]: http://help.appveyor.com/discussions/problems/28023
PYYAML: "==5.2b1"
- PYTHON: "C:\\Python35"
- PYTHON: "C:\\Python35-x64"
- PYTHON: "C:\\Python36"
Expand All @@ -15,7 +21,7 @@ install:
# install runtime dependencies
- "%PYTHON%\\python.exe -m pip install -r requirements.txt"
# install testing dependencies
- "%PYTHON%\\python.exe -m pip install pyyaml"
- "%PYTHON%\\python.exe -m pip install pyyaml%PYYAML%"

build: off

Expand Down

0 comments on commit 4f79627

Please sign in to comment.