我有一个基本的 Heroku 应用程序,如果我不在主应用程序文件中包含from src.RtcTokenBuilder2 import RtcTokenBuilder, Role_Publisher, time ,则运行得很好。我想添加一个文件夹 src,其中包含 Agora RTC 令牌生成的代码。要添加代码,我只需从下面的链接中的 Github 下载代码,然后将 src 文件夹复制并粘贴到我的 python 项目中。我需要的 src 文件夹位于“DynamicKey/AgoraDynamicKey/python3/src”。一旦我将 src 文件夹放在同一目录中,我就会使用上面的 import 语句导入令牌生成。
现在我做git add AccessToken.py AccessToken2.py ChatTokenBuilder2.py DynamicKey.py DynamicKey2.py DynamicKey3.py DynamicKey4.py DynamicKey5.py Packer.py RtcTokenBuilder.py RtcTokenBuilder2.py RtmTokenBuilder.py RtmTokenBuilder2.py SignalingToken.py education_token_builder.py fpa_token_builder.py utils.py
我提交添加内容并运行git push heroku master
通过这样做,heroku git 更新不会出现错误,并且它表示该站点已更新。但是,当我尝试查看已生成的示例令牌时,该网站显示错误并表示使用 heroku 日志来跟踪错误。日志的输出很长,但包括from src.RtcTokenBuilder2 import RtcTokenBuilder、Role_Publisher、时间。ModuleNotFoundError:没有名为“src”的模块
当我添加 src 文件夹并尝试使用它时,我做错了什么?我的设置没有任何问题,因为没有上面的导入一切都正常。
https://github.com/AgoraIO/Tools
骗子服务器.py
from flask import Flask, request
from src.RtcTokenBuilder2 import RtcTokenBuilder, Role_Publisher, time
app = Flask(__name__)
@app.route('/process_data', methods=['GET'])
def process_data():
x = int(request.args.get('x', 0))
y = request.args.get('y', 'default')
appId = "test"
appCertificate = "test"
expirationTimeInSeconds = 3600
channelName = y
uid = x
token = "random tok"
current_timestamp = int(time.time())
expired_ts = current_timestamp + expirationTimeInSeconds
token = RtcTokenBuilder.build_token_with_uid(appId, appCertificate, channelName, uid, Role_Publisher, token_expire=expired_ts, privilege_expire=expired_ts)
result = f'token is: {token}'
return f'<h1>{result}</h1>'
过程文件
web: gunicorn hustlerserver:app
要求.txt
Flask==3.0.1
gunicorn==21.2.0
Jinja2==3.1.3
确保目录
__init__.py
中有文件src
。该文件可以为空,但它的存在使得目录成为 Python 包。在您的中
hustlerserver.py
,您正在从 导入src.RtcTokenBuilder2
。确保该路径正确并且该RtcTokenBuilder2.py
文件存在于该src
目录中。进行这些更改后,使用
git add .
添加所有更改,提交它们,然后推送到 Heroku。