Home >Backend Development >Python Tutorial >Heroku error when adding code in nested folder python

Heroku error when adding code in nested folder python

WBOY
WBOYforward
2024-02-05 23:24:08871browse

在嵌套文件夹 python 中添加代码时 Heroku 出错

Question content

I have a basic heroku app and if my main app file does not contain from src.rtctokenbuilder2 import rtctokenbuilder, role_publisher, time , the application works fine. I want to add a folder src which contains agora rtc token generated code. To add the code I simply downloaded the code from github at the link below and then copied and pasted the src folder into my python project. The src folder I need is located at "dynamickey/agoradynamickey/python3/src". Once I have the src folder in the same directory, I import the token generation using the import statement above.

Now I dogit 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 commit the addition and run git push heroku master

By doing this, the heroku git update will not error out and will indicate that the site has been updated. However, when I try to view the sample token that was generated, the website shows an error and says to use heroku logs to track the error. The output of the log is very long, but includes from src.rtctokenbuilder2 import rtctokenbuilder, role_publisher, and time. modulenotfounderror: No module named 'src'

What am I doing wrong when I add the src folder and try to use it? I don't have any issues with my setup as everything works fine without the import above.

https://github.com/agoraio/tools

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>'

Configuration file

web: gunicorn hustlerserver:app

Requirements.txt

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

Correct answer


Make sure there is __init__.py file in the src directory. This file can be empty, but its presence makes the directory a python package.

In hustlerserver.py you will import from src.rtctokenbuilder2. Make sure this path is correct and that the rtctokenbuilder2.py file exists in the src directory.

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 

After making these changes, use git add . to add all changes, commit them, and then push to heroku.

The above is the detailed content of Heroku error when adding code in nested folder python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:stackoverflow.com. If there is any infringement, please contact admin@php.cn delete