Heroku error when adding code in nested folder python

WBOY
Release: 2024-02-05 23:24:08
forward
808 people have browsed it

在嵌套文件夹 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>'
Copy after login

Configuration file

web: gunicorn hustlerserver:app
Copy after login

Requirements.txt

Flask==3.0.1
gunicorn==21.2.0
Jinja2==3.1.3
Copy after login


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 
Copy after login

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!

source:stackoverflow.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!