正在获取 python3: 无法打开文件 'daphne': [Errno 2] Heroku 中没有这样的文件或目录(requirements.txt 中有 daphne)
Getting python3: can't open file 'daphne': [Errno 2] No such file or directory in Heroku (requirements.txt has daphne in it)
这是我的 requirements.txt
:
fastapi
pydantic
daphne
这是 Procfile:
web: python3 daphne -b 0.0.0.0 -p 8000 main:app
这是日志:
$ pip install -r requirements.txt
Requirement already satisfied: fastapi in /home/petr/.local/lib/python3.8/site-packages (from -r requirements.txt (line 1)) (0.68.0)
Requirement already satisfied: pydantic in /home/petr/.local/lib/python3.8/site-packages (from -r requirements.txt (line 2)) (1.8.2)
Requirement already satisfied: daphne in /home/petr/.local/lib/python3.8/site-packages (from -r requirements.txt (line 3)) (3.0.2)
Requirement already satisfied: starlette==0.14.2 in /home/petr/.local/lib/python3.8/site-packages (from fastapi->-r requirements.txt (line 1)) (0.14.2)
Requirement already satisfied: typing-extensions>=3.7.4.3 in /home/petr/.local/lib/python3.8/site-packages (from pydantic->-r requirements.txt (line 2)) (3.10.0.0)
Requirement already satisfied: autobahn>=0.18 in /home/petr/.local/lib/python3.8/site-packages (from daphne->-r requirements.txt (line 3)) (21.3.1)
Requirement already satisfied: twisted[tls]>=18.7 in /home/petr/.local/lib/python3.8/site-packages (from daphne->-r requirements.txt (line 3)) (21.7.0)
Requirement already satisfied: asgiref<4,>=3.2.10 in /home/petr/.local/lib/python3.8/site-packages (from daphne->-r requirements.txt (line 3)) (3.4.1)
Requirement already satisfied: cryptography>=3.4.6 in /home/petr/.local/lib/python3.8/site-packages (from autobahn>=0.18->daphne->-r requirements.txt (line 3)) (3.4.7)
Requirement already satisfied: hyperlink>=21.0.0 in /home/petr/.local/lib/python3.8/site-packages (from autobahn>=0.18->daphne->-r requirements.txt (line 3)) (21.0.0)
Requirement already satisfied: txaio>=21.2.1 in /home/petr/.local/lib/python3.8/site-packages (from autobahn>=0.18->daphne->-r requirements.txt (line 3)) (21.2.1)
Requirement already satisfied: attrs>=19.2.0 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (21.2.0)
Requirement already satisfied: zope.interface>=4.4.2 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (5.4.0)
Requirement already satisfied: incremental>=21.3.0 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (21.3.0)
Requirement already satisfied: Automat>=0.8.0 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (20.2.0)
Requirement already satisfied: constantly>=15.1 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (15.1.0)
Requirement already satisfied: service-identity>=18.1.0; extra == "tls" in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (21.1.0)
Requirement already satisfied: idna>=2.4; extra == "tls" in /usr/lib/python3/dist-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (2.8)
Requirement already satisfied: pyopenssl>=16.0.0; extra == "tls" in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (20.0.1)
Requirement already satisfied: cffi>=1.12 in /home/petr/.local/lib/python3.8/site-packages (from cryptography>=3.4.6->autobahn>=0.18->daphne->-r requirements.txt (line 3)) (1.14.6)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from zope.interface>=4.4.2->twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (45.2.0)
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from Automat>=0.8.0->twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (1.14.0)
Requirement already satisfied: pyasn1-modules in /home/petr/.local/lib/python3.8/site-packages (from service-identity>=18.1.0; extra == "tls"->twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (0.2.8)
Requirement already satisfied: pyasn1 in /home/petr/.local/lib/python3.8/site-packages (from service-identity>=18.1.0; extra == "tls"->twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (0.4.8)
Requirement already satisfied: pycparser in /home/petr/.local/lib/python3.8/site-packages (from cffi>=1.12->cryptography>=3.4.6->autobahn>=0.18->daphne->-r requirements.txt (line 3)) (2.20)
这是日志:heroku local web
10:59:51 AM web.1 | python3: can't open file 'daphne': [Errno 2] No such file or directory
[DONE] Killing all processes with signal SIGINT
10:59:51 AM web.1 Exited with exit code null
我所在的文件夹 运行 如下所示:
main.py Procfile requirements.txt
里面有一个.git
文件夹
感谢您的帮助!
编辑
将其放入文件 app.py
:
from daphne.cli import CommandLineInterface
CommandLineInterface.entrypoint()
使用 python3 app.py -b 0.0.0.0 -p 8000 main:app
进行测试
然后将其放入 Procfile:
web: python3 app.py -b 0.0.0.0 -p 8000 main:app
不工作
无法正常工作,因为 __main__
不解析命令行,并且 heroku local
不支持 -m
开关 (?)。
您想执行一个模块,而不是一个文件。达芙妮是模块。所以试试
web: python3 -m daphne -b 0.0.0.0 -p 8000 main:app
这是我的 requirements.txt
:
fastapi
pydantic
daphne
这是 Procfile:
web: python3 daphne -b 0.0.0.0 -p 8000 main:app
这是日志:
$ pip install -r requirements.txt
Requirement already satisfied: fastapi in /home/petr/.local/lib/python3.8/site-packages (from -r requirements.txt (line 1)) (0.68.0)
Requirement already satisfied: pydantic in /home/petr/.local/lib/python3.8/site-packages (from -r requirements.txt (line 2)) (1.8.2)
Requirement already satisfied: daphne in /home/petr/.local/lib/python3.8/site-packages (from -r requirements.txt (line 3)) (3.0.2)
Requirement already satisfied: starlette==0.14.2 in /home/petr/.local/lib/python3.8/site-packages (from fastapi->-r requirements.txt (line 1)) (0.14.2)
Requirement already satisfied: typing-extensions>=3.7.4.3 in /home/petr/.local/lib/python3.8/site-packages (from pydantic->-r requirements.txt (line 2)) (3.10.0.0)
Requirement already satisfied: autobahn>=0.18 in /home/petr/.local/lib/python3.8/site-packages (from daphne->-r requirements.txt (line 3)) (21.3.1)
Requirement already satisfied: twisted[tls]>=18.7 in /home/petr/.local/lib/python3.8/site-packages (from daphne->-r requirements.txt (line 3)) (21.7.0)
Requirement already satisfied: asgiref<4,>=3.2.10 in /home/petr/.local/lib/python3.8/site-packages (from daphne->-r requirements.txt (line 3)) (3.4.1)
Requirement already satisfied: cryptography>=3.4.6 in /home/petr/.local/lib/python3.8/site-packages (from autobahn>=0.18->daphne->-r requirements.txt (line 3)) (3.4.7)
Requirement already satisfied: hyperlink>=21.0.0 in /home/petr/.local/lib/python3.8/site-packages (from autobahn>=0.18->daphne->-r requirements.txt (line 3)) (21.0.0)
Requirement already satisfied: txaio>=21.2.1 in /home/petr/.local/lib/python3.8/site-packages (from autobahn>=0.18->daphne->-r requirements.txt (line 3)) (21.2.1)
Requirement already satisfied: attrs>=19.2.0 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (21.2.0)
Requirement already satisfied: zope.interface>=4.4.2 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (5.4.0)
Requirement already satisfied: incremental>=21.3.0 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (21.3.0)
Requirement already satisfied: Automat>=0.8.0 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (20.2.0)
Requirement already satisfied: constantly>=15.1 in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (15.1.0)
Requirement already satisfied: service-identity>=18.1.0; extra == "tls" in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (21.1.0)
Requirement already satisfied: idna>=2.4; extra == "tls" in /usr/lib/python3/dist-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (2.8)
Requirement already satisfied: pyopenssl>=16.0.0; extra == "tls" in /home/petr/.local/lib/python3.8/site-packages (from twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (20.0.1)
Requirement already satisfied: cffi>=1.12 in /home/petr/.local/lib/python3.8/site-packages (from cryptography>=3.4.6->autobahn>=0.18->daphne->-r requirements.txt (line 3)) (1.14.6)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from zope.interface>=4.4.2->twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (45.2.0)
Requirement already satisfied: six in /usr/lib/python3/dist-packages (from Automat>=0.8.0->twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (1.14.0)
Requirement already satisfied: pyasn1-modules in /home/petr/.local/lib/python3.8/site-packages (from service-identity>=18.1.0; extra == "tls"->twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (0.2.8)
Requirement already satisfied: pyasn1 in /home/petr/.local/lib/python3.8/site-packages (from service-identity>=18.1.0; extra == "tls"->twisted[tls]>=18.7->daphne->-r requirements.txt (line 3)) (0.4.8)
Requirement already satisfied: pycparser in /home/petr/.local/lib/python3.8/site-packages (from cffi>=1.12->cryptography>=3.4.6->autobahn>=0.18->daphne->-r requirements.txt (line 3)) (2.20)
这是日志:heroku local web
10:59:51 AM web.1 | python3: can't open file 'daphne': [Errno 2] No such file or directory
[DONE] Killing all processes with signal SIGINT
10:59:51 AM web.1 Exited with exit code null
我所在的文件夹 运行 如下所示:
main.py Procfile requirements.txt
里面有一个.git
文件夹
感谢您的帮助!
编辑
将其放入文件 app.py
:
from daphne.cli import CommandLineInterface
CommandLineInterface.entrypoint()
使用 python3 app.py -b 0.0.0.0 -p 8000 main:app
然后将其放入 Procfile:
web: python3 app.py -b 0.0.0.0 -p 8000 main:app
不工作
无法正常工作,因为 __main__
不解析命令行,并且 heroku local
不支持 -m
开关 (?)。
您想执行一个模块,而不是一个文件。达芙妮是模块。所以试试
web: python3 -m daphne -b 0.0.0.0 -p 8000 main:app