我有一个基本的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

I提交加法并运行git push heroku master

通过这样做,Heroku Git更新没有错误,它说网站已经更新了.但是,当我try 查看已生成的示例令牌时,站点显示了一个错误,并告诉我使用Heroku日志(log)来跟踪该错误.日志(log)的输出很长,但包括from src.RtcTokenBuilder2 import RtcTokenBuilder, Role_Publisher, time. ModuleNotFoundError: No module named 'src'

当我添加src文件夹并try 使用它时,我做错了什么?我的设置没有其他问题,因为没有上面的导入,一切都运行得很好.

https://github.com/AgoraIO/Tools

photo

Hustlerserver.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

Requirments.txt

Flask==3.0.1
gunicorn==21.2.0
Jinja2==3.1.3

推荐答案

确保src目录中有一个__init__.py文件.该文件可以是空的,但它的存在使目录成为一个Python包.

在你的hustlerserver.py美元中,你是从src.RtcTokenBuilder2开始进口的.确保该路径正确,并且RtcTokenBuilder2.py文件存在于src目录中.

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():
    # rest of your code 

完成这些更改后,使用git add .添加所有更改,提交它们,然后推送到Heroku.

Python相关问答推荐

Gekko解算器错误results.json未找到,无法找出原因

手动为pandas中的列上色

Python:MultiIndex Dataframe到类似json的字典列表

使用Python进行网页抓取,没有页面

如何判断LazyFrame是否为空?

Altair -箱形图边界设置为黑色,中线设置为红色

创建带有二维码的Flask应用程序,可重定向到特定端点

更改Seaborn条形图中的x轴日期时间限制

按照行主要蛇扫描顺序对点列表进行排序

在Python中为变量的缺失值创建虚拟值

列表上值总和最多为K(以O(log n))的最大元素数

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

需要计算60,000个坐标之间的距离

Polars:用氨纶的其他部分替换氨纶的部分

我们可以为Flask模型中的id字段主键设置默认uuid吗

如何调整QscrollArea以正确显示内部正在变化的Qgridlayout?

实现自定义QWidgets作为QTimeEdit的弹出窗口

pandas:排序多级列

如何合并两个列表,并获得每个索引值最高的列表名称?

合并与拼接并举