我用Python创建了一个具有以下项目结构的项目:
G:.
│ .gitignore
│ ReadMe.txt
│ requirements.txt
│ setup.py
│
├───.vscode
│ settings.json
│
├───app
│ │ app.py
│ │ models.py
│ │ __init__.py
│ │
│ ├───static
│ │ ├───css
│ │ │ login_styles.css
│ │ │
│ │ ├───fonts
│ │ │ NotoSansDisplay-Regular.ttf
│ │ │
│ │ ├───js
│ │ │ game_script.js
│ │ │ login_script.js
│ │ │
│ │ └───res
│ │ │ 3201279.jpg
│ │ │ background_abstract.jpg
│ │ │
│ │ ├───fonts
│ │ │ ARCADECLASSIC.TTF
│ │ │
│ │ └───sprites
│ │ ├───invaders
│ │ │ space__0000_A1.png
│ │ │ space__0001_A2.png
│ │ │
│ │ └───projectiles
│ │ missile_1.png
│ │
│ ├───templates
│ │ game.html
│ │ login.html
│ │
│ └───__pycache__
│ app.cpython-310.pyc
│ __init__.cpython-310.pyc
│
├───instance
│ test.db
│
├───Pflichtenheft
│ Space-Invaders-ReWebed_Pflichtenheft.docx
│
└───tests
test_01.py
我用
setup.py
创建了一个tar.gz
:
from setuptools import setup, find_packages
setup(
name='space_invaders_rewebed',
version='1.0',
packages=find_packages(),
include_package_data=True,
install_requires=[
'annotated-types==0.6.0',
'anyio==4.3.0',
'blinker==1.7.0',
'click==8.1.7',
'colorama==0.4.6',
'exceptiongroup==1.2.0',
'Flask==3.0.2',
'Flask-SQLAlchemy==3.1.1',
'greenlet==3.0.3',
'idna==3.6',
'itsdangerous==2.1.2',
'Jinja2==3.1.3',
'MarkupSafe==2.1.5',
'pydantic==2.6.3',
'pydantic_core==2.16.3',
'sniffio==1.3.1',
'SQLAlchemy==2.0.28',
'starlette==0.36.3',
'typing_extensions==4.10.0',
'Werkzeug==3.0.1'
],
entry_points={
'console_scripts': [
'run_space_invaders_rewebed = app:main'
]
}
)
但是,当我在 venv 中安装
tar.gz
并运行我的命令 run_space_invaders_rewebed
时,我得到以下 error
:
AttributeError: module 'app' has no attribute 'main'
但是我的app.py中有一个明确定义的main():
from flask import Flask, jsonify, render_template, request, redirect, url_for, session, make_response
from models import db, User, Score
from werkzeug.security import generate_password_hash, check_password_hash
def create_app():
app = Flask(__name__)
app.secret_key = "super secret key"
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db.init_app(app)
with app.app_context():
db.create_all()
@app.route('/')
def index():
return render_template('login.html')
return app
def main():
app = create_app()
app.run(debug=True)
if __name__ == '__main__':
main()
我希望我的脚本能够正确执行,但错误不允许我这样做。我究竟该如何修复该错误以及为什么找不到我的 main() ?
我认为入口点配置是:
entry_points={
'console_scripts': [
'run_space_invaders_rewebed = app.app:main'
]
}