diff --git a/setup.py b/setup.py
index 0e2860139b5a928034998bfba1a1a06d99c5616f..f4a82e59b63cbed2c1de8bebefe3e99d51db9f55 100644
--- a/setup.py
+++ b/setup.py
@@ -7,15 +7,20 @@ REQUIREMENTS = [
     'conllu==2.3.2',
     'dataclasses;python_version<"3.7"',
     'jsonnet==0.15.0',
-    'numpy==1.19.4',
+    'filelock==3.0;python_version>="3.9"',
+    'numpy==1.19.4;python_version<"3.9"',
+    'numpy==1.22.0;python_version>="3.9"',
     'overrides==3.1.0',
     'requests==2.23.0',
     'sentencepiece==0.1.83;python_version<"3.8"',
-    'sentencepiece==0.1.85;python_version>="3.8"',
+    'sentencepiece==0.1.85;python_version>="3.8" and python_version<"3.9"',
+    'sentencepiece==0.1.94;python_version>="3.9"',
     'scipy<1.6.0;python_version<"3.7"',  # SciPy 1.6.0 works for 3.7+
+    'scipy==1.6.0;python_version>="3.7"',
     'spacy==2.3.2',
-    'scikit-learn<=0.23.2',
-    'torch==1.7.0',
+    'scikit-learn<=0.23.2;python_version<"3.9"',
+    'scikit-learn==0.23.2;python_version>="3.9"',
+    'torch==1.7.1',
     'tqdm==4.43.0',
     'transformers==4.0.1',
     'urllib3==1.25.11',
@@ -31,7 +36,10 @@ setup(
     license='GPL-3.0',
     url='https://gitlab.clarin-pl.eu/syntactic-tools/combo',
     keywords="nlp natural-language-processing dependency-parsing",
-    setup_requires=['pytest-runner', 'pytest-pylint'],
+    setup_requires=['pytest-runner',
+    		    'pytest-pylint',
+    		    'numpy==1.22.0;python_version>="3.9"',
+    		    'scipy==1.6.0;python_version>="3.7"'],
     tests_require=['pytest', 'pylint'],
     python_requires='>=3.6',
     package_data={'combo': ['config.graph.template.jsonnet', 'config.template.jsonnet']},
@@ -44,5 +52,6 @@ setup(
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
     ]
-)
+)
\ No newline at end of file