由于 PyWin32,无法将 Django 应用程序部署到 Heroku

Posted

技术标签:

【中文标题】由于 PyWin32,无法将 Django 应用程序部署到 Heroku【英文标题】:Unable to Deploy Django App to Heroku because of PyWin32 【发布时间】:2021-12-25 17:27:02 【问题描述】:

所以我浏览了论坛寻找答案,但没有找到适合我的答案。 我使用的是 Windows 机器,我的 Django 应用程序在 Localhost 上运行,但是当我尝试将相同的应用程序部署到 Heroku 时,它给了我这个错误。

INFO: pip is looking at multiple versions of anyio to determine which version is compatible with other requirements. This could take a while.
remote:        ERROR: Could not find a version that satisfies the requirement pywin32>=223 (from pypiwin32) (from versions: none)
remote:        ERROR: No matching distribution found for pywin32>=223
remote:  !     Push rejected, failed to compile Python app.

我已经从 requirements.txt 文件中删除了pywin32,但是当我运行

git push heroku master

命令,我一直收到同样的错误。

我还尝试将所有源代码复制到一个新文件夹中,并删除了最初的 git 文件并重新初始化了 Git,但似乎仍然没有任何效果。

我读过的没有帮助的论坛文章包括:

Could not find a version that satisfies the requirement pywin32==227 heroku Heroku fails to install pywin32 library

请允许我附上我的完整error log

Enumerating objects: 268, done.
Counting objects: 100% (268/268), done.
Delta compression using up to 8 threads
Compressing objects: 100% (259/259), done.
Writing objects: 100% (268/268), 377.32 KiB | 4.49 MiB/s, done.
Total 268 (delta 147), reused 0 (delta 0), pack-reused 0
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Building on the Heroku-20 stack
remote: -----> Determining which buildpack to use for this app
remote: -----> Python app detected
remote: -----> No Python version was specified. Using the buildpack default: python-3.9.8
remote:        To use a different version, see: https://devcenter.heroku.com/articles/python-runtimes
remote: -----> Installing python-3.9.8
remote: -----> Installing pip 21.3.1, setuptools 57.5.0 and wheel 0.37.0
remote: -----> Installing SQLite3
remote: -----> Installing requirements with pip
remote:        Ignoring pywin32: markers 'platform_system == "Windows"' don't match your environment
remote:        Collecting anyio==3.3.0
remote:          Downloading anyio-3.3.0-py3-none-any.whl (77 kB)
remote:        Collecting argon2-cffi==20.1.0
remote:          Downloading argon2_cffi-20.1.0-cp35-abi3-manylinux1_x86_64.whl (97 kB)
remote:        Collecting asgiref==3.4.1
remote:          Downloading asgiref-3.4.1-py3-none-any.whl (25 kB)
remote:        Collecting attrs==21.2.0
remote:          Downloading attrs-21.2.0-py2.py3-none-any.whl (53 kB)
remote:        Collecting autopep8==1.5.7
remote:          Downloading autopep8-1.5.7-py2.py3-none-any.whl (45 kB)
remote:        Collecting Babel==2.9.1
remote:          Downloading Babel-2.9.1-py2.py3-none-any.whl (8.8 MB)
remote:        Collecting backcall==0.2.0
remote:          Downloading backcall-0.2.0-py2.py3-none-any.whl (11 kB)
remote:        Collecting beautifulsoup4==4.9.3
remote:          Downloading beautifulsoup4-4.9.3-py3-none-any.whl (115 kB)
remote:        Collecting bleach==4.0.0
remote:          Downloading bleach-4.0.0-py2.py3-none-any.whl (146 kB)
remote:        Collecting branca==0.4.2
remote:          Downloading branca-0.4.2-py3-none-any.whl (24 kB)
remote:        Collecting certifi==2021.5.30
remote:          Downloading certifi-2021.5.30-py2.py3-none-any.whl (145 kB)
remote:        Collecting cffi==1.14.6
remote:          Downloading cffi-1.14.6-cp39-cp39-manylinux1_x86_64.whl (405 kB)
remote:        Collecting charset-normalizer==2.0.4
remote:          Downloading charset_normalizer-2.0.4-py3-none-any.whl (36 kB)
remote:        Collecting click==8.0.1
remote:          Downloading click-8.0.1-py3-none-any.whl (97 kB)
remote:        Collecting click-plugins==1.1.1
remote:          Downloading click_plugins-1.1.1-py2.py3-none-any.whl (7.5 kB)
remote:        Collecting cligj==0.7.2
remote:          Downloading cligj-0.7.2-py3-none-any.whl (7.1 kB)
remote:        Collecting colorama==0.4.4
remote:          Downloading colorama-0.4.4-py2.py3-none-any.whl (16 kB)
remote:        Collecting cryptography==3.4.7
remote:          Downloading cryptography-3.4.7-cp36-abi3-manylinux2014_x86_64.whl (3.2 MB)
remote:        Collecting cycler==0.10.0
remote:          Downloading cycler-0.10.0-py2.py3-none-any.whl (6.5 kB)
remote:        Collecting debugpy==1.4.1
remote:          Downloading debugpy-1.4.1-cp39-cp39-manylinux2014_x86_64.whl (4.5 MB)
remote:        Collecting decorator==5.0.9
remote:          Downloading decorator-5.0.9-py3-none-any.whl (8.9 kB)
remote:        Collecting defusedxml==0.7.1
remote:          Downloading defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)
remote:        Collecting dj-database-url==0.5.0
remote:          Downloading dj_database_url-0.5.0-py2.py3-none-any.whl (5.5 kB)
remote:        Collecting Django==3.2.9
remote:          Downloading Django-3.2.9-py3-none-any.whl (7.9 MB)
remote:        Collecting django-crispy-forms==1.12.0
remote:          Downloading django_crispy_forms-1.12.0-py3-none-any.whl (122 kB)
remote:        Collecting django-heroku==0.3.1
remote:          Downloading django_heroku-0.3.1-py2.py3-none-any.whl (6.2 kB)
remote:        Collecting django-taggit==1.5.1
remote:          Downloading django_taggit-1.5.1-py3-none-any.whl (53 kB)
remote:        Collecting docopt==0.6.2
remote:          Downloading docopt-0.6.2.tar.gz (25 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting entrypoints==0.3
remote:          Downloading entrypoints-0.3-py2.py3-none-any.whl (11 kB)
remote:        Collecting folium==0.12.1
remote:          Downloading folium-0.12.1-py2.py3-none-any.whl (94 kB)
remote:        Collecting future==0.18.2
remote:          Downloading future-0.18.2.tar.gz (829 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting geocoder==1.38.1
remote:          Downloading geocoder-1.38.1-py2.py3-none-any.whl (98 kB)
remote:        Collecting geographiclib==1.52
remote:          Downloading geographiclib-1.52-py3-none-any.whl (38 kB)
remote:        Collecting geopy==2.2.0
remote:          Downloading geopy-2.2.0-py3-none-any.whl (118 kB)
remote:        Collecting gunicorn==20.1.0
remote:          Downloading gunicorn-20.1.0-py3-none-any.whl (79 kB)
remote:        Collecting idna==3.2
remote:          Downloading idna-3.2-py3-none-any.whl (59 kB)
remote:        Collecting importlib-metadata==4.6.4
remote:          Downloading importlib_metadata-4.6.4-py3-none-any.whl (17 kB)
remote:        Collecting ipykernel==6.2.0
remote:          Downloading ipykernel-6.2.0-py3-none-any.whl (122 kB)
remote:        Collecting ipython==7.26.0
remote:          Downloading ipython-7.26.0-py3-none-any.whl (786 kB)
remote:        Collecting ipython-genutils==0.2.0
remote:          Downloading ipython_genutils-0.2.0-py2.py3-none-any.whl (26 kB)
remote:        Collecting ipywidgets==7.6.3
remote:          Downloading ipywidgets-7.6.3-py2.py3-none-any.whl (121 kB)
remote:        Collecting jedi==0.18.0
remote:          Downloading jedi-0.18.0-py2.py3-none-any.whl (1.4 MB)
remote:        Collecting Jinja2==3.0.1
remote:          Downloading Jinja2-3.0.1-py3-none-any.whl (133 kB)
remote:        Collecting Js2Py==0.71
remote:          Downloading Js2Py-0.71-py3-none-any.whl (1.0 MB)
remote:        Collecting json5==0.9.6
remote:          Downloading json5-0.9.6-py2.py3-none-any.whl (18 kB)
remote:        Collecting jsonschema==3.2.0
remote:          Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
remote:        Collecting jupyter-client==7.0.1
remote:          Downloading jupyter_client-7.0.1-py3-none-any.whl (122 kB)
remote:        Collecting jupyter-core==4.7.1
remote:          Downloading jupyter_core-4.7.1-py3-none-any.whl (82 kB)
remote:        Collecting jupyter-server==1.10.2
remote:          Downloading jupyter_server-1.10.2-py3-none-any.whl (392 kB)
remote:        Collecting jupyterlab==3.1.7
remote:          Downloading jupyterlab-3.1.7-py3-none-any.whl (8.5 MB)
remote:        Collecting jupyterlab-pygments==0.1.2
remote:          Downloading jupyterlab_pygments-0.1.2-py2.py3-none-any.whl (4.6 kB)
remote:        Collecting jupyterlab-server==2.7.2
remote:          Downloading jupyterlab_server-2.7.2-py3-none-any.whl (55 kB)
remote:        Collecting jupyterlab-widgets==1.0.0
remote:          Downloading jupyterlab_widgets-1.0.0-py3-none-any.whl (243 kB)
remote:        Collecting keyring==23.1.0
remote:          Downloading keyring-23.1.0-py3-none-any.whl (32 kB)
remote:        Collecting kiwisolver==1.3.1
remote:          Downloading kiwisolver-1.3.1-cp39-cp39-manylinux1_x86_64.whl (1.2 MB)
remote:        Collecting lerc==0.1.0
remote:          Downloading lerc-0.1.0.tar.gz (567 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting MarkupSafe==2.0.1
remote:          Downloading MarkupSafe-2.0.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (30 kB)
remote:        Collecting matplotlib==3.4.3
remote:          Downloading matplotlib-3.4.3-cp39-cp39-manylinux1_x86_64.whl (10.3 MB)
remote:        Collecting matplotlib-inline==0.1.2
remote:          Downloading matplotlib_inline-0.1.2-py3-none-any.whl (8.2 kB)
remote:        Collecting mistune==0.8.4
remote:          Downloading mistune-0.8.4-py2.py3-none-any.whl (16 kB)
remote:        Collecting munch==2.5.0
remote:          Downloading munch-2.5.0-py2.py3-none-any.whl (10 kB)
remote:        Collecting nbclassic==0.3.1
remote:          Downloading nbclassic-0.3.1-py3-none-any.whl (18 kB)
remote:        Collecting nbclient==0.5.4
remote:          Downloading nbclient-0.5.4-py3-none-any.whl (66 kB)
remote:        Collecting nbconvert==6.1.0
remote:          Downloading nbconvert-6.1.0-py3-none-any.whl (551 kB)
remote:        Collecting nbformat==5.1.3
remote:          Downloading nbformat-5.1.3-py3-none-any.whl (178 kB)
remote:        Collecting nest-asyncio==1.5.1
remote:          Downloading nest_asyncio-1.5.1-py3-none-any.whl (5.0 kB)
remote:        Collecting notebook==6.4.3
remote:          Downloading notebook-6.4.3-py3-none-any.whl (9.9 MB)
remote:        Collecting ntlm-auth==1.5.0
remote:          Downloading ntlm_auth-1.5.0-py2.py3-none-any.whl (29 kB)
remote:        Collecting numpy==1.21.4
remote:          Downloading numpy-1.21.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (15.7 MB)
remote:        Collecting oauthlib==3.1.1
remote:          Downloading oauthlib-3.1.1-py2.py3-none-any.whl (146 kB)
remote:        Collecting packaging==21.0
remote:          Downloading packaging-21.0-py3-none-any.whl (40 kB)
remote:        Collecting pandas==1.3.2
remote:          Downloading pandas-1.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.5 MB)
remote:        Collecting pandocfilters==1.4.3
remote:          Downloading pandocfilters-1.4.3.tar.gz (16 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting parso==0.8.2
remote:          Downloading parso-0.8.2-py2.py3-none-any.whl (94 kB)
remote:        Collecting pickleshare==0.7.5
remote:          Downloading pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB)
remote:        Collecting Pillow==8.3.1
remote:          Downloading Pillow-8.3.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (3.0 MB)
remote:        Collecting prometheus-client==0.11.0
remote:          Downloading prometheus_client-0.11.0-py2.py3-none-any.whl (56 kB)
remote:        Collecting prompt-toolkit==3.0.20
remote:          Downloading prompt_toolkit-3.0.20-py3-none-any.whl (370 kB)
remote:        Collecting psycopg2==2.9.1
remote:          Downloading psycopg2-2.9.1.tar.gz (379 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting psycopg2-binary==2.9.1
remote:          Downloading psycopg2_binary-2.9.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.4 MB)
remote:        Collecting pycodestyle==2.7.0
remote:          Downloading pycodestyle-2.7.0-py2.py3-none-any.whl (41 kB)
remote:        Collecting pycparser==2.20
remote:          Downloading pycparser-2.20-py2.py3-none-any.whl (112 kB)
remote:        Collecting Pygments==2.10.0
remote:          Downloading Pygments-2.10.0-py3-none-any.whl (1.0 MB)
remote:        Collecting pyjsparser==2.7.1
remote:          Downloading pyjsparser-2.7.1.tar.gz (24 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting pyparsing==2.4.7
remote:          Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
remote:        Collecting PyPrind==2.11.3
remote:          Downloading PyPrind-2.11.3-py2.py3-none-any.whl (8.4 kB)
remote:        Collecting pyproj==3.1.0
remote:          Downloading pyproj-3.1.0-cp39-cp39-manylinux2010_x86_64.whl (6.6 MB)
remote:        Collecting pyrsistent==0.18.0
remote:          Downloading pyrsistent-0.18.0-cp39-cp39-manylinux1_x86_64.whl (117 kB)
remote:        Collecting pyshp==2.1.3
remote:          Downloading pyshp-2.1.3.tar.gz (219 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting pySmartDL==1.3.4
remote:          Downloading pySmartDL-1.3.4-py3-none-any.whl (20 kB)
remote:        Collecting python-dateutil==2.8.2
remote:          Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
remote:        Collecting python-decouple==3.4
remote:          Downloading python_decouple-3.4-py3-none-any.whl (9.5 kB)
remote:        Collecting pytz==2021.1
remote:          Downloading pytz-2021.1-py2.py3-none-any.whl (510 kB)
remote:        Collecting pyzmq==22.2.1
remote:          Downloading pyzmq-22.2.1-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl (1.1 MB)
remote:        Collecting ratelim==0.1.6
remote:          Downloading ratelim-0.1.6-py2.py3-none-any.whl (4.0 kB)
remote:        Collecting requests==2.26.0
remote:          Downloading requests-2.26.0-py2.py3-none-any.whl (62 kB)
remote:        Collecting requests-kerberos==0.12.0
remote:          Downloading requests_kerberos-0.12.0-py2.py3-none-any.whl (14 kB)
remote:        Collecting requests-negotiate-sspi==0.5.2
remote:          Downloading requests_negotiate_sspi-0.5.2-py2.py3-none-any.whl (7.1 kB)
remote:        Collecting requests-ntlm==1.1.0
remote:          Downloading requests_ntlm-1.1.0-py2.py3-none-any.whl (5.7 kB)
remote:        Collecting requests-oauthlib==1.3.0
remote:          Downloading requests_oauthlib-1.3.0-py2.py3-none-any.whl (23 kB)
remote:        Collecting requests-toolbelt==0.9.1
remote:          Downloading requests_toolbelt-0.9.1-py2.py3-none-any.whl (54 kB)
remote:        Collecting requests-unixsocket==0.2.0
remote:          Downloading requests_unixsocket-0.2.0-py2.py3-none-any.whl (11 kB)
remote:        Collecting Send2Trash==1.8.0
remote:          Downloading Send2Trash-1.8.0-py3-none-any.whl (18 kB)
remote:        Collecting setuptools-scm==6.0.1
remote:          Downloading setuptools_scm-6.0.1-py3-none-any.whl (27 kB)
remote:        Collecting Shapely==1.7.1
remote:          Downloading Shapely-1.7.1-1-cp39-cp39-manylinux1_x86_64.whl (1.0 MB)
remote:        Collecting six==1.16.0
remote:          Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
remote:        Collecting sniffio==1.2.0
remote:          Downloading sniffio-1.2.0-py3-none-any.whl (10 kB)
remote:        Collecting soupsieve==2.2.1
remote:          Downloading soupsieve-2.2.1-py3-none-any.whl (33 kB)
remote:        Collecting sqlparse==0.4.1
remote:          Downloading sqlparse-0.4.1-py3-none-any.whl (42 kB)
remote:        Collecting terminado==0.11.1
remote:          Downloading terminado-0.11.1-py3-none-any.whl (15 kB)
remote:        Collecting testpath==0.5.0
remote:          Downloading testpath-0.5.0-py3-none-any.whl (84 kB)
remote:        Collecting toml==0.10.2
remote:          Downloading toml-0.10.2-py2.py3-none-any.whl (16 kB)
remote:        Collecting tornado==6.1
remote:          Downloading tornado-6.1-cp39-cp39-manylinux2010_x86_64.whl (427 kB)
remote:        Collecting traitlets==5.0.5
remote:          Downloading traitlets-5.0.5-py3-none-any.whl (100 kB)
remote:        Collecting tzdata==2021.1
remote:          Downloading tzdata-2021.1-py2.py3-none-any.whl (338 kB)
remote:        Collecting tzlocal==3.0
remote:          Downloading tzlocal-3.0-py3-none-any.whl (16 kB)
remote:        Collecting ujson==4.1.0
remote:          Downloading ujson-4.1.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl (179 kB)
remote:        Collecting urllib3==1.26.6
remote:          Downloading urllib3-1.26.6-py2.py3-none-any.whl (138 kB)
remote:        Collecting wcwidth==0.2.5
remote:          Downloading wcwidth-0.2.5-py2.py3-none-any.whl (30 kB)
remote:        Collecting webencodings==0.5.1
remote:          Downloading webencodings-0.5.1-py2.py3-none-any.whl (11 kB)
remote:        Collecting websocket-client==1.2.1
remote:          Downloading websocket_client-1.2.1-py2.py3-none-any.whl (52 kB)
remote:        Collecting whitenoise==5.3.0
remote:          Downloading whitenoise-5.3.0-py2.py3-none-any.whl (19 kB)
remote:        Collecting widgetsnbextension==3.5.1
remote:          Downloading widgetsnbextension-3.5.1-py2.py3-none-any.whl (2.2 MB)
remote:        Collecting winkerberos==0.8.0
remote:          Downloading winkerberos-0.8.0.zip (44 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting wrapt==1.12.1
remote:          Downloading wrapt-1.12.1.tar.gz (27 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting zipp==3.5.0
remote:          Downloading zipp-3.5.0-py3-none-any.whl (5.7 kB)
remote:        Collecting pexpect>4.3
remote:          Downloading pexpect-4.8.0-py2.py3-none-any.whl (59 kB)
remote:        Collecting SecretStorage>=3.2
remote:          Downloading SecretStorage-3.3.1-py3-none-any.whl (15 kB)
remote:        Collecting jeepney>=0.4.2
remote:          Downloading jeepney-0.7.1-py3-none-any.whl (54 kB)
remote:        Collecting pykerberos<2.0.0,>=1.1.8
remote:          Downloading pykerberos-1.2.1.tar.gz (24 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        Collecting pypiwin32>=223
remote:          Downloading pypiwin32-223-py3-none-any.whl (1.7 kB)
remote:        Collecting ptyprocess
remote:          Downloading ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
remote:        INFO: pip is looking at multiple versions of pykerberos to determine which version is compatible with other requirements. This could take a while.
remote:        Collecting pykerberos<2.0.0,>=1.1.8
remote:          Downloading pykerberos-1.1.14.tar.gz (20 kB)
remote:          Preparing metadata (setup.py): started
remote:          Preparing metadata (setup.py): finished with status 'done'
remote:        INFO: pip is looking at multiple versions of ptyprocess to determine which version is compatible with other requirements. This could take a while.
remote:        Collecting ptyprocess
remote:          Downloading ptyprocess-0.6.0-py2.py3-none-any.whl (39 kB)
remote:        INFO: pip is looking at multiple versions of pexpect to determine which version is compatible with other requirements. This could take a while.
remote:        Collecting pexpect>4.3
remote:          Downloading pexpect-4.7.0-py2.py3-none-any.whl (58 kB)
remote:        INFO: pip is looking at multiple versions of jeepney to determine which version is compatible with other requirements. This could take a while.
remote:        Collecting jeepney>=0.4.2
remote:          Downloading jeepney-0.7.0-py3-none-any.whl (53 kB)
remote:        INFO: pip is looking at multiple versions of zipp to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of geographiclib to determine which version is compatible with other requirements. This could take a while.        
remote:        INFO: pip is looking at multiple versions of geocoder to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of future to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of folium to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of entrypoints to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of docopt to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of django-taggit to determine which version is compatible with other requirements. This could take a while.        
remote:        INFO: pip is looking at multiple versions of django-heroku to determine which version is compatible with other requirements. This could take a while.        
remote:        INFO: pip is looking at multiple versions of django-crispy-forms to determine which version is compatible with other requirements. This could take a while.  
remote:        INFO: pip is looking at multiple versions of django to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of dj-database-url to determine which version is compatible with other requirements. This could take a while.      
remote:        INFO: pip is looking at multiple versions of defusedxml to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of decorator to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of debugpy to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of cycler to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of cryptography to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of colorama to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of cligj to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of click-plugins to determine which version is compatible with other requirements. This could take a while.        
remote:        INFO: pip is looking at multiple versions of click to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of charset-normalizer to determine which version is compatible with other requirements. This could take a while.   
remote:        INFO: pip is looking at multiple versions of cffi to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of certifi to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of branca to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of bleach to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of beautifulsoup4 to determine which version is compatible with other requirements. This could take a while.       
remote:        INFO: pip is looking at multiple versions of backcall to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of babel to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of autopep8 to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of attrs to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of asgiref to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of argon2-cffi to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of <Python from Requires-Python> to determine which version is compatible with other requirements. This could take a while.
remote:        INFO: pip is looking at multiple versions of anyio to determine which version is compatible with other requirements. This could take a while.
remote:        ERROR: Could not find a version that satisfies the requirement pywin32>=223 (from pypiwin32) (from versions: none)
remote:        ERROR: No matching distribution found for pywin32>=223
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote:  !
remote:  ! ## Warning - The same version of this code has already been built: 5876ebd1f6928d422590ee2bced6db875179e28e
remote:  !
remote:  ! We have detected that you have triggered a build from source code with version 5876ebd1f6928d422590ee2bced6db875179e28e
remote:  ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch.
remote:  !
remote:  ! If you are developing on a branch and deploying via git you must run:
remote:  !
remote:  !     git push heroku <branchname>:main
remote:  !
remote:  ! This article goes into details on the behavior:
remote:  !   https://devcenter.heroku.com/articles/duplicate-build-version
remote:
remote: Verifying deploy...
remote:
remote: !       Push rejected to djangogis.
remote:
To https://git.heroku.com/djangogis.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/djangogis.git'

然后是我的requirements file

任何可以帮助我的人,我都会非常感激。我到底哪里弄错了?

【问题讨论】:

@phd 来自问题中的 requirements.txt 文件,您能否通过说明可能导致重新安装 pywin32 的依赖项提供帮助,即使它不在 requirements.txt 文件中?我找不到它。 【参考方案1】:

在您当前的requirements.txt 中,您使用环境标记platform_system == "Windows" 标记了pywin32。我认为语法是错误的。 PEP 496 的正确语法是:

pywin32==223; sys_platform == "win32"

【讨论】:

即使我使用这种语法,我仍然遇到同样的问题。我想我的是一个主要问题,需要逐一检查需求中的所有内容,试图找出可能导致此错误的内容。 所以我设法找到了一个临时的部署方案。我在一个单独的虚拟环境中安装了 django,并收集了 django 附带的所有要求。然后我手动添加了所有导入的模块,直到应用程序完成。我想在开发过程中,有一些软件包已安装但从未使用过,工作变得杂乱无章。现在有地方开始。感谢您的帮助和时间。

以上是关于由于 PyWin32,无法将 Django 应用程序部署到 Heroku的主要内容,如果未能解决你的问题,请参考以下文章

pywin32无法下载安装

无法加载 pywin32 库 win32gui

Mac系统下Python自动化批量word转换pdf

Python:通过pywin32模块批量将rtf或docx另存为doc格式

有没有使用 pywin32 createprocessasuser 并获取输出的好例子?

如何使用 pywin32 在 Python 中获取特定应用程序窗口的句柄?