diff --git a/.appveyor.yml b/.appveyor.yml
index c7824d8b..46961620 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -8,15 +8,7 @@ install:
     - choco install strawberryperl
     - copy %PYTHON%\python.exe %PYTHON%\python3.exe
     - SET PATH=%PYTHON%;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;%PATH%
-    - python3 -mpip install Pillow
-    - python3 -mpip install flake8
-    - python3 -mpip install flake8-import-order
-    - python3 -mpip install py2exe
-    - python3 -mpip install pycotap
-    - python3 -mpip install pygame
-    - python3 -mpip install pysol-cards
-    - python3 -mpip install random2
-    - python3 -mpip install six
+    - python3 -mpip install Pillow attrs flake8 flake8-import-order py2exe pycotap pygame pysol-cards random2 six
     - perl -v
     - copy C:\msys64\mingw64\bin\mingw32-make.exe C:\msys64\mingw64\bin\make.exe
     - SET PATH=C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin;%PATH%
diff --git a/.travis.yml b/.travis.yml
index acfb94a6..ef7b5796 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -39,7 +39,7 @@ before_install:
 install:
     - sudo cpanm --notest Capture::Tiny
     - sudo cpanm Code::TidyAll::Plugin::Flake8 Perl::Tidy Test::Code::TidyAll Test::Differences Test::TrailingSpace
-    - export PY_MODS='pycotap pysol-cards random2 six'
+    - export PY_MODS='attrs pycotap pysol-cards random2 six'
     - "`which python3` -m pip install --upgrade flake8 flake8-import-order $PY_MODS"
     - "sudo /usr/bin/python3 -m pip install --upgrade $PY_MODS || true"
     - "sudo `which python2` -m pip install --upgrade $PY_MODS"