活动介绍
file-type

实现Flask与以太坊客户端交互的Flask-Web3扩展

下载需积分: 50 | 23KB | 更新于2025-08-13 | 184 浏览量 | 0 下载量 举报 收藏
download 立即下载
在深入研究flask-web3这个Flask扩展之前,先让我们理解一些基础概念。首先,Flask是一个轻量级的Web应用框架,广泛用于Python语言开发的网站后台。而Web3.py是一个Python库,使得开发者能够用Python语言与以太坊节点进行交互,执行各种区块链操作,如发送交易、智能合约的部署和调用等。 ### Flask-Web3: Flask扩展允许与Web3.py顺利集成 #### 知识点一:Flask-Web3的作用与目的 Flask-Web3扩展的作用是将Flask应用程序与Web3.py库平滑地集成。通过这个扩展,Web开发人员可以更方便地构建与以太坊客户端交互的应用程序。这样的应用程序,通常被称为Dapp(去中心化应用),能够在区块链上执行智能合约相关操作。 #### 知识点二:使用Flask-Web3的系统要求 - Python版本需要是3.5或更高。Python 3.5+版本提供了对异步操作的支持,这对于区块链应用来说,是提高性能的关键。 #### 知识点三:Flask-Web3的配置方法 从给出的简单示例中可以看出,Flask-Web3的配置相对直观。开发者需要先从flask导入Flask和jsonify模块,然后再从flask_web3模块导入必要的对象。 示例代码中首先声明了一个Flask应用程序实例,接着通过`app.config.update()`方法设置了Flask-Web3的配置项。这里,`'ETHEREUM_PROVIDER'`和`'ETHEREUM_ENDPOINT_URI'`是必须设置的配置项,它们分别指定了以太坊节点的提供者和端点URI。 #### 知识点四:Web3.py的基本功能 Web3.py库提供了与以太坊节点通信的接口。通过这个接口,开发人员可以创建和发送交易、与智能合约进行交互、查询区块链状态等。Web3.py为区块链应用开发者提供了一套抽象层,帮助他们不必直接与底层的以太坊协议打交道,从而降低了区块链开发的门槛。 #### 知识点五:以太坊Dapp开发简介 Dapp(Decentralized Application)是一种运行在以太坊等区块链平台上的应用。与传统的中心化应用不同,Dapp不依赖单一服务器,而是运行在去中心化的网络上。Dapp的核心是智能合约,它们是一段在区块链上运行的代码,通常由Solidity这种特定的编程语言编写。Dapp可以用于各种场景,如金融、游戏、版权保护等。 #### 知识点六:关于flask-web3-master压缩包内容 标题中提到的“flask-web3-master”是压缩包的文件名,这个名称暗示这是一个包含Flask-Web3扩展源代码的项目,且项目中的源代码是按照版本控制系统(如Git)的master分支进行组织的。开发者可以通过解压这个文件来查看源代码,了解扩展内部的实现细节,甚至进行本地化修改或扩展功能。 #### 知识点七:与以太坊交互的方式 在进行以太坊Dapp开发时,通常涉及到三种主要的方式与以太坊交互: 1. 直接通过JSON-RPC接口与以太坊节点通信。 2. 使用Web3.py库封装的接口与以太坊节点交互。 3. 通过Remix、Truffle等开发工具,这些工具集成了Web3.js(JavaScript版本的Web3库)等前端工具,帮助开发者更方便地编写、测试和部署智能合约。 #### 知识点八:未来技术趋势 随着区块链技术的发展,开发人员需要掌握相关技术栈的越来越多。Flask和Web3.py只是其中的一部分。在不远的未来,区块链开发可能需要结合更多技术,如IPFS(InterPlanetary File System)用于分布式数据存储,零知识证明用于隐私保护等。因此,不断更新和拓宽区块链开发相关的知识体系,对于开发人员来说是十分重要的。 总结起来,Flask-Web3扩展的出现,大大简化了Flask与Web3.py的集成过程,为开发人员提供了一个更加便捷的途径去构建和部署以太坊Dapp。开发者只需简单地配置和利用现成的API,就可以实现与以太坊节点的通信,并最终实现区块链应用的构建。对于区块链应用开发感兴趣的开发者来说,掌握Flask、Web3.py以及相关的区块链基础知识是构建高效、安全的Dapp的必要条件。

相关推荐

filetype

这个错误怎么解决:192.168.34.71 - - [14/Jan/2023 22:41:01] "GET /get_nb2_ip/ HTTP/1.1" 500 - Traceback (most recent call last): File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 2548, in __call__ return self.wsgi_app(environ, start_response) File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 2528, in wsgi_app response = self.handle_exception(e) File "/usr/local/lib/python3.8/dist-packages/flask_cors/extension.py", line 165, in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) File "/usr/local/lib/python3.8/dist-packages/flask_cors/extension.py", line 165, in wrapped_function return cors_after_request(app.make_response(f(*args, **kwargs))) File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 2525, in wsgi_app response = self.full_dispatch_request() File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1823, in full_dispatch_request return self.finalize_request(rv) File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 1842, in finalize_request response = self.make_response(rv) File "/usr/local/lib/python3.8/dist-packages/flask/app.py", line 2170, in make_response raise TypeError( TypeError: The view function did not return a valid response. The return type must be a string, dict, list, tuple with headers or status, Response instance, or WSGI callable, but it was a Response.代码是这个:@app.route('/get_nb2_ip/') def get_nb2_ip(): #curl -i --basic -u admin:public -X GET "http://192.168.34.131:8081/api/v4/clients?_page=1&_limit=10" response = requests.get('http:192.168.34.131:8081/api/v4/clients?_page=1&_limit=10', auth=('admin', 'public')) return response

filetype

Collecting parl Using cached parl-2.2.1-py3-none-any.whl.metadata (6.9 kB) Collecting termcolor>=1.1.0 (from parl) Using cached termcolor-3.1.0-py3-none-any.whl.metadata (6.4 kB) Requirement already satisfied: scipy>=1.0.0 in f:\anaconda\anaconda3\envs\png\lib\site-packages (from parl) (1.15.3) Collecting tensorboardX==2.5 (from parl) Using cached tensorboardX-2.5-py2.py3-none-any.whl.metadata (5.2 kB) Collecting tensorboard<=2.11.0 (from parl) Using cached tensorboard-2.11.0-py3-none-any.whl.metadata (1.9 kB) Collecting flask>=1.0.4 (from parl) Using cached flask-3.1.1-py3-none-any.whl.metadata (3.0 kB) Collecting click (from parl) Using cached click-8.2.1-py3-none-any.whl.metadata (2.5 kB) Collecting psutil>=5.6.2 (from parl) Using cached psutil-7.0.0-cp37-abi3-win_amd64.whl.metadata (23 kB) Collecting flask-cors (from parl) Using cached flask_cors-6.0.1-py3-none-any.whl.metadata (5.3 kB) Collecting requests (from parl) Using cached requests-2.32.4-py3-none-any.whl.metadata (4.9 kB) Collecting grpcio==1.37.0 (from parl) Using cached grpcio-1.37.0.tar.gz (21.7 MB) Preparing metadata (setup.py) ... done Collecting protobuf<=3.20.0,>=3.14.0 (from parl) Using cached protobuf-3.20.0-py2.py3-none-any.whl.metadata (720 bytes) Collecting pynvml (from parl) Using cached pynvml-12.0.0-py3-none-any.whl.metadata (5.4 kB) Collecting cloudpickle==1.6.0 (from parl) Using cached cloudpickle-1.6.0-py3-none-any.whl.metadata (4.3 kB) Collecting pyzmq==22.3.0 (from parl) Using cached pyzmq-22.3.0.tar.gz (1.2 MB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [21 lines of output] Traceback (most recent call last): File "F:\Anaconda\anaconda3\envs\png\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 389, in <module> main() File "F:\Anaconda\anaconda3\envs\png\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 373, in main json_out["return_val"] = hook(**hook_input["kwargs"]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "F:\Anaconda\anaconda3\envs\png\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 143, in get_requires_for_build_wheel return hook(config_settings) ^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yzq13\AppData\Local\Temp\pip-build-env-itfjrk57\overlay\Lib\site-packages\setuptools\build_meta.py", line 331, in get_requires_for_build_wheel return self._get_build_requires(config_settings, requirements=[]) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\yzq13\AppData\Local\Temp\pip-build-env-itfjrk57\overlay\Lib\site-packages\setuptools\build_meta.py", line 301, in _get_build_requires self.run_setup() File "C:\Users\yzq13\AppData\Local\Temp\pip-build-env-itfjrk57\overlay\Lib\site-packages\setuptools\build_meta.py", line 317, in run_setup exec(code, locals()) File "<string>", line 141, in <module> File "C:\Users\yzq13\AppData\Local\Temp\pip-install-t3ef5jjp\pyzmq_b724185530b64b649bcc0fb231f0effc\buildutils\misc.py", line 83, in locate_vcredist_dir vcvars = msvc.msvc14_get_vc_env(get_platform()) ^^^^^^^^^^^^^^^^^^^^^^ AttributeError: module 'setuptools.msvc' has no attribute 'msvc14_get_vc_env'

filetype
filetype

(.venv1) PS F:\Program Files\CEX-snipers> python --version Python 3.13.3 (.venv1) PS F:\Program Files\CEX-snipers> python -m venv gateio_env_310 (.venv1) PS F:\Program Files\CEX-snipers> (.venv1) PS F:\Program Files\CEX-snipers> python -m venv gateio_env_310 (.venv1) PS F:\Program Files\CEX-snipers> pip install .\aiodns-3.0.0-cp310-cp310-win_amd64.whl WARNING: Requirement '.\\aiodns-3.0.0-cp310-cp310-win_amd64.whl' looks like a filename, but the file does not exist [notice] A new release of pip is available: 25.0.1 -> 25.1.1 [notice] To update, run: python.exe -m pip install --upgrade pip ERROR: aiodns-3.0.0-cp310-cp310-win_amd64.whl is not a supported wheel on this platform. (.venv1) PS F:\Program Files\CEX-snipers> pip install .\multidict-6.0.2-cp310-cp310-win_amd64.whl WARNING: Requirement '.\\multidict-6.0.2-cp310-cp310-win_amd64.whl' looks like a filename, but the file does not exist [notice] A new release of pip is available: 25.0.1 -> 25.1.1 [notice] To update, run: python.exe -m pip install --upgrade pip ERROR: multidict-6.0.2-cp310-cp310-win_amd64.whl is not a supported wheel on this platform. (.venv1) PS F:\Program Files\CEX-snipers> pip install .\yarl-1.8.1-cp310-cp310-win_amd64.whl WARNING: Requirement '.\\yarl-1.8.1-cp310-cp310-win_amd64.whl' looks like a filename, but the file does not exist [notice] A new release of pip is available: 25.0.1 -> 25.1.1 [notice] To update, run: python.exe -m pip install --upgrade pip ERROR: yarl-1.8.1-cp310-cp310-win_amd64.whl is not a supported wheel on this platform. (.venv1) PS F:\Program Files\CEX-snipers> pip install -r requirements.txt Collecting aiodns==3.0.0 (from -r requirements.txt (line 1)) Downloading aiodns-3.0.0-py3-none-any.whl.metadata (3.5 kB) Collecting aiohttp==3.9.0 (from -r requirements.txt (line 2)) Using cached aiohttp-3.9.0-cp313-cp313-win_amd64.whl Collecting aiosignal==1.2.0 (from -r requirements.txt (line 3)) Downloading aiosignal-1.2.0-py3-none-any.whl.metadata (5.5 kB) Collecting async-timeout==4.0.2 (from -r requirements.txt (line 4)) Downloading async_timeout-4.0.2-py3-none-any.whl.metadata (4.2 kB) Collecting attrs==22.1.0 (from -r requirements.txt (line 5)) Using cached attrs-22.1.0-py2.py3-none-any.whl.metadata (11 kB) Collecting ccxt==2.0.77 (from -r requirements.txt (line 6)) Downloading ccxt-2.0.77-py2.py3-none-any.whl.metadata (120 kB) Collecting certifi==2023.7.22 (from -r requirements.txt (line 7)) Downloading certifi-2023.7.22-py3-none-any.whl.metadata (2.2 kB) Collecting cffi==1.15.1 (from -r requirements.txt (line 8)) Downloading cffi-1.15.1.tar.gz (508 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting charset-normalizer==2.1.1 (from -r requirements.txt (line 9)) Downloading charset_normalizer-2.1.1-py3-none-any.whl.metadata (11 kB) Collecting click==8.1.3 (from -r requirements.txt (line 10)) Downloading click-8.1.3-py3-none-any.whl.metadata (3.2 kB) Collecting cryptography==41.0.4 (from -r requirements.txt (line 11)) Downloading cryptography-41.0.4-cp37-abi3-win_amd64.whl.metadata (5.3 kB) Collecting Flask==2.2.5 (from -r requirements.txt (line 12)) Downloading Flask-2.2.5-py3-none-any.whl.metadata (3.9 kB) Collecting frozenlist==1.3.1 (from -r requirements.txt (line 13)) Downloading frozenlist-1.3.1.tar.gz (66 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting idna==3.4 (from -r requirements.txt (line 14)) Downloading idna-3.4-py3-none-any.whl.metadata (9.8 kB) Collecting itsdangerous==2.1.2 (from -r requirements.txt (line 15)) Downloading itsdangerous-2.1.2-py3-none-any.whl.metadata (2.9 kB) Collecting Jinja2==3.1.2 (from -r requirements.txt (line 16)) Downloading Jinja2-3.1.2-py3-none-any.whl.metadata (3.5 kB) Collecting MarkupSafe==2.1.1 (from -r requirements.txt (line 17)) Using cached markupsafe-2.1.1-cp313-cp313-win_amd64.whl Collecting multidict==6.0.2 (from -r requirements.txt (line 18)) Downloading multidict-6.0.2.tar.gz (50 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Collecting pycares==4.2.2 (from -r requirements.txt (line 19)) Using cached pycares-4.2.2-cp313-cp313-win_amd64.whl Collecting pycparser==2.21 (from -r requirements.txt (line 20)) Downloading pycparser-2.21-py2.py3-none-any.whl.metadata (1.1 kB) Collecting python-dotenv==0.21.0 (from -r requirements.txt (line 21)) Downloading python_dotenv-0.21.0-py3-none-any.whl.metadata (20 kB) Collecting urllib3==1.26.12 (from -r requirements.txt (line 22)) Downloading urllib3-1.26.12-py2.py3-none-any.whl.metadata (47 kB) Collecting Werkzeug==2.2.3 (from -r requirements.txt (line 23)) Downloading Werkzeug-2.2.3-py3-none-any.whl.metadata (4.4 kB) Collecting yarl==1.8.1 (from -r requirements.txt (line 24)) Downloading yarl-1.8.1.tar.gz (172 kB) Installing build dependencies ... done Getting requirements to build wheel ... done Preparing metadata (pyproject.toml) ... done Requirement already satisfied: setuptools>=60.9.0 in f:\program files\cex-snipers\.venv1\lib\site-packages (from ccxt==2.0.77->-r requirements.txt (line 6)) (80.4.0) Requirement already satisfied: requests>=2.18.4 in f:\program files\cex-snipers\.venv1\lib\site-packages (from ccxt==2.0.77->-r requirements.txt (line 6)) (2.32.3) Collecting colorama (from click==8.1.3->-r requirements.txt (line 10)) Downloading colorama-0.4.6-py2.py3-none-any.whl.metadata (17 kB) Downloading aiodns-3.0.0-py3-none-any.whl (5.0 kB) Downloading aiosignal-1.2.0-py3-none-any.whl (8.2 kB) Downloading async_timeout-4.0.2-py3-none-any.whl (5.8 kB) Downloading attrs-22.1.0-py2.py3-none-any.whl (58 kB) Downloading ccxt-2.0.77-py2.py3-none-any.whl (3.5 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.5/3.5 MB 1.9 MB/s eta 0:00:00 Downloading certifi-2023.7.22-py3-none-any.whl (158 kB) Downloading charset_normalizer-2.1.1-py3-none-any.whl (39 kB) Downloading click-8.1.3-py3-none-any.whl (96 kB) Downloading cryptography-41.0.4-cp37-abi3-win_amd64.whl (2.7 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.7/2.7 MB 2.0 MB/s eta 0:00:00 Downloading Flask-2.2.5-py3-none-any.whl (101 kB) Downloading idna-3.4-py3-none-any.whl (61 kB) Using cached itsdangerous-2.1.2-py3-none-any.whl (15 kB) Downloading Jinja2-3.1.2-py3-none-any.whl (133 kB) Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB) Downloading python_dotenv-0.21.0-py3-none-any.whl (18 kB) Downloading urllib3-1.26.12-py2.py3-none-any.whl (140 kB) Downloading Werkzeug-2.2.3-py3-none-any.whl (233 kB) Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB) Building wheels for collected packages: cffi, frozenlist, multidict, yarl Building wheel for cffi (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for cffi (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [140 lines of output] _configtest.c C:\Users\Administrator\AppData\Local\Temp\pip-build-env-4c8t_yjf\overlay\Lib\site-packages\setuptools\dist.py:761: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: MIT License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() running bdist_wheel running build running build_py creating build\lib.win-amd64-cpython-313\cffi copying cffi\api.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\backend_ctypes.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\cffi_opcode.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\commontypes.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\cparser.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\error.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\ffiplatform.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\lock.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\model.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\pkgconfig.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\recompiler.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\setuptools_ext.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\vengine_cpy.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\vengine_gen.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\verifier.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\__init__.py -> build\lib.win-amd64-cpython-313\cffi copying cffi\_cffi_include.h -> build\lib.win-amd64-cpython-313\cffi copying cffi\parse_c_type.h -> build\lib.win-amd64-cpython-313\cffi copying cffi\_embedding.h -> build\lib.win-amd64-cpython-313\cffi copying cffi\_cffi_errors.h -> build\lib.win-amd64-cpython-313\cffi running build_ext building '_cffi_backend' extension creating build\temp.win-amd64-cpython-313\Release\c creating build\temp.win-amd64-cpython-313\Release\c\libffi_x86_x64 "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DFFI _BUILDING=1 -Ic/libffi_x86_x64 "-IF:\Program Files\CEX-snipers\.venv1\include" "-IC:\Program Files\Python313\include" "-IC:\Program Files\Python313\Include" "-IC :\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTool s\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\ um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Progra m Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcc/_cffi_backend.c /Fobuild\temp.win-amd64-cpython-313\Release\c\_cffi_backend.obj _cffi_backend.c c/_cffi_backend.c(406): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(407): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1098): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1107): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1132): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1155): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1174): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1188): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1337): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1339): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1689): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1690): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1692): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1704): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1705): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1708): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1727): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1771): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1836): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1838): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1849): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(1852): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(2249): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(2254): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(2258): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(2273): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(2332): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(3262): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(3983): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(4083): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(4199): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(4240): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(4509): warning C4013: “PyUnicode_GetSize”未定义;假设外部返回 int c/_cffi_backend.c(4512): warning C4133: “函数”: 从“PyUnicodeObject *”到“PyObject *”的类型不兼容 c/_cffi_backend.c(4523): warning C4996: 'Py_FileSystemDefaultEncoding': deprecated in 3.12 c/_cffi_backend.c(4807): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(4825): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(4966): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(4957): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(4978): warning C4267: “初始化”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5374): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5421): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5428): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5647): warning C4244: “=”: 从“Py_ssize_t”转换到“unsigned short”,可能丢失数据 c/_cffi_backend.c(5781): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5785): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5801): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5814): warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5843): warning C4244: “函数”: 从“Py_ssize_t”转换到“int”,可能丢失数据 c/_cffi_backend.c(5909): warning C4244: “函数”: 从“Py_ssize_t”转换到“unsigned int”,可能丢失数据 c/_cffi_backend.c(5997): warning C4244: “函数”: 从“Py_ssize_t”转换到“long”,可能丢失数据 c/_cffi_backend.c(6112): warning C4013: “_PyErr_WriteUnraisableMsg”未定义;假设外部返回 int c/_cffi_backend.c(6547): warning C4267: “=”: 从“size_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\parse_c_type.c(218): warning C4267: “return”: 从“size_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\parse_c_type.c(287): warning C4267: “=”: 从“size_t” 转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\parse_c_type.c(341): warning C4244: “=”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\parse_c_type.c(445): warning C4244: “return”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\realize_c_type.c(425): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\realize_c_type.c(430): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\realize_c_type.c(448): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\realize_c_type.c(460): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\realize_c_type.c(559): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\realize_c_type.c(621): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\realize_c_type.c(700): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\realize_c_type.c(753): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\lib_obj.c(130): warning C4244: “初始化”: 从“intptr_t”转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\lib_obj.c(306): warning C4244: “函数”: 从“intptr_t” 转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\lib_obj.c(358): warning C4244: “函数”: 从“intptr_t” 转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\lib_obj.c(384): warning C4244: “函数”: 从“intptr_t” 转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\lib_obj.c(405): warning C4244: “函数”: 从“intptr_t” 转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\lib_obj.c(419): warning C4244: “函数”: 从“intptr_t” 转换到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(170): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(215): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(247): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(248): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(260): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(261): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(281): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(301): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(302): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(307): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(327): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\cdlopen.c(331): warning C4244: “=”: 从“Py_ssize_t”转到“int”,可能丢失数据 C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\cffi_30453d23ffc84916bda88eb2b1871b2e\c\call_python.c(110): warning C4244: “函数”: 从“intptr_t”转换到“int”,可能丢失数据 "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DFFI _BUILDING=1 -Ic/libffi_x86_x64 "-IF:\Program Files\CEX-snipers\.venv1\include" "-IC:\Program Files\Python313\include" "-IC:\Program Files\Python313\Include" "-IC :\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTool s\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\ um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Progra m Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcc/libffi_x86_x64\ffi.c /Fobuild\temp.win-amd64-cpython-313\Release\c\libffi_x86_x64\ffi.obj ffi.c "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DFFI _BUILDING=1 -Ic/libffi_x86_x64 "-IF:\Program Files\CEX-snipers\.venv1\include" "-IC:\Program Files\Python313\include" "-IC:\Program Files\Python313\Include" "-IC :\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTool s\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\ um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Progra m Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcc/libffi_x86_x64\prep_cif.c /Fobuild\temp.win-amd64-cpython-313\Release\c\libffi_x86_x64\prep_cif.obj prep_cif.c c/libffi_x86_x64\prep_cif.c(169): warning C4267: “+=”: 从“size_t”转换到“unsigned int”,可能丢失数据 "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -DFFI _BUILDING=1 -Ic/libffi_x86_x64 "-IF:\Program Files\CEX-snipers\.venv1\include" "-IC:\Program Files\Python313\include" "-IC:\Program Files\Python313\Include" "-IC :\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTool s\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\ um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Progra m Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcc/libffi_x86_x64\types.c /Fobuild\temp.win-amd64-cpython-313\Release\c\libffi_x86_x64\types.obj types.c "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MAN IFEST:EMBED,ID=2 /MANIFESTUAC:NO "/LIBPATH:F:\Program Files\CEX-snipers\.venv1\libs" "/LIBPATH:C:\Program Files\Python313\libs" "/LIBPATH:C:\Program Files\Python 313" "/LIBPATH:F:\Program Files\CEX-snipers\.venv1\PCbuild\amd64" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34 808\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" " /LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" /EXPORT:PyInit__cffi_backend build\temp.win-amd64-cpython-313\Release\c\_cffi_backend. obj build\temp.win-amd64-cpython-313\Release\c\libffi_x86_x64\ffi.obj build\temp.win-amd64-cpython-313\Release\c\libffi_x86_x64\prep_cif.obj build\temp.win-amd64 -cpython-313\Release\c\libffi_x86_x64\types.obj /OUT:build\lib.win-amd64-cpython-313\_cffi_backend.cp313-win_amd64.pyd /IMPLIB:build\temp.win-amd64-cpython-313\Release\c\_cffi_backend.cp313-win_amd64.lib c/libffi_x86_x64\win64.obj 正在创建库 build\temp.win-amd64-cpython-313\Release\c\_cffi_backend.cp313-win_amd64.lib 和对象 build\temp.win-amd64-cpython-313\Release\c\_cffi_backend.cp313-win_amd64.exp _cffi_backend.obj : error LNK2001: 无法解析的外部符号 _PyErr_WriteUnraisableMsg build\lib.win-amd64-cpython-313\_cffi_backend.cp313-win_amd64.pyd : fatal error LNK1120: 1 个无法解析的外部命令 error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.43.34808\\bin\\HostX86\\x64\\link.exe' failed with exit code 1120 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for cffi Building wheel for frozenlist (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for frozenlist (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [68 lines of output] C:\Users\Administrator\AppData\Local\Temp\pip-build-env-6dpmg0dd\overlay\Lib\site-packages\setuptools\dist.py:761: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: Apache Software License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() ********************* * Accelerated build * ********************* running bdist_wheel running build running build_py creating build\lib.win-amd64-cpython-313\frozenlist copying frozenlist\__init__.py -> build\lib.win-amd64-cpython-313\frozenlist running egg_info writing frozenlist.egg-info\PKG-INFO writing dependency_links to frozenlist.egg-info\dependency_links.txt writing top-level names to frozenlist.egg-info\top_level.txt reading manifest file 'frozenlist.egg-info\SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files matching '*.pyc' found anywhere in distribution warning: no previously-included files matching '*.pyd' found anywhere in distribution warning: no previously-included files matching '*.so' found anywhere in distribution warning: no previously-included files matching '*.lib' found anywhere in distribution warning: no previously-included files matching '*.dll' found anywhere in distribution warning: no previously-included files matching '*.a' found anywhere in distribution warning: no previously-included files matching '*.obj' found anywhere in distribution warning: no previously-included files found matching 'frozenlist\*.html' no previously-included directories found matching 'docs\_build' adding license file 'LICENSE' writing manifest file 'frozenlist.egg-info\SOURCES.txt' copying frozenlist\__init__.pyi -> build\lib.win-amd64-cpython-313\frozenlist copying frozenlist\_frozenlist.pyx -> build\lib.win-amd64-cpython-313\frozenlist copying frozenlist\py.typed -> build\lib.win-amd64-cpython-313\frozenlist running build_ext building 'frozenlist._frozenlist' extension creating build\temp.win-amd64-cpython-313\Release\frozenlist "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD "-IF: \Program Files\CEX-snipers\.venv1\include" "-IC:\Program Files\Python313\include" "-IC:\Program Files\Python313\Include" "-IC:\Program Files (x86)\Microsoft Visu al Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Pro gram Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Window s Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\inclu de\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcfrozenlist/_frozenlist.c /Fobuild\temp.win-amd64-cpython-313\Release\frozenlist\_frozenlist.obj _frozenlist.c frozenlist/_frozenlist.c(822): warning C4996: 'Py_UNICODE': deprecated in 3.13 frozenlist/_frozenlist.c(823): warning C4996: 'Py_UNICODE': deprecated in 3.13 frozenlist/_frozenlist.c(4718): warning C4013: “_PyGC_FINALIZED”未定义;假设外部返回 int frozenlist/_frozenlist.c(5967): error C2039: "curexc_traceback": 不是 "_ts" 的成员 C:\Program Files\Python313\include\cpython/pystate.h(59): note: 参见“_ts”的声明 frozenlist/_frozenlist.c(5970): error C2039: "curexc_traceback": 不是 "_ts" 的成员 C:\Program Files\Python313\include\cpython/pystate.h(59): note: 参见“_ts”的声明 frozenlist/_frozenlist.c(6338): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 frozenlist/_frozenlist.c(7348): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 frozenlist/_frozenlist.c(7403): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 frozenlist/_frozenlist.c(7489): error C2198: “int _PyLong_AsByteArray(PyLongObject *,unsigned char *,size_t,int,int,int)”: 用于调用的参数太少 frozenlist/_frozenlist.c(7582): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 frozenlist/_frozenlist.c(7637): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 frozenlist/_frozenlist.c(7723): error C2198: “int _PyLong_AsByteArray(PyLongObject *,unsigned char *,size_t,int,int,int)”: 用于调用的参数太少 frozenlist/_frozenlist.c(8088): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.43.34808\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for frozenlist Building wheel for multidict (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for multidict (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [98 lines of output] C:\Users\Administrator\AppData\Local\Temp\pip-build-env-qqhkzasv\overlay\Lib\site-packages\setuptools\dist.py:761: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: Apache Software License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() ********************* * Accelerated build * ********************* running bdist_wheel running build running build_py creating build\lib.win-amd64-cpython-313\multidict copying multidict\_abc.py -> build\lib.win-amd64-cpython-313\multidict copying multidict\_compat.py -> build\lib.win-amd64-cpython-313\multidict copying multidict\_multidict_base.py -> build\lib.win-amd64-cpython-313\multidict copying multidict\_multidict_py.py -> build\lib.win-amd64-cpython-313\multidict copying multidict\__init__.py -> build\lib.win-amd64-cpython-313\multidict running egg_info writing multidict.egg-info\PKG-INFO writing dependency_links to multidict.egg-info\dependency_links.txt writing top-level names to multidict.egg-info\top_level.txt reading manifest file 'multidict.egg-info\SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files matching '*.pyc' found anywhere in distribution warning: no previously-included files found matching 'multidict\_multidict.html' warning: no previously-included files found matching 'multidict\*.so' warning: no previously-included files found matching 'multidict\*.pyd' warning: no previously-included files found matching 'multidict\*.pyd' no previously-included directories found matching 'docs\_build' adding license file 'LICENSE' writing manifest file 'multidict.egg-info\SOURCES.txt' C:\Users\Administrator\AppData\Local\Temp\pip-build-env-qqhkzasv\overlay\Lib\site-packages\setuptools\command\build_py.py:212: _Warning: Package 'multidict._multilib' is absent from the `packages` configuration. !! ******************************************************************************** ############################ # Package would be ignored # ############################ Python recognizes 'multidict._multilib' as an importable package[^1], but it is absent from setuptools' `packages` configuration. This leads to an ambiguous overall configuration. If you want to distribute this package, please make sure that 'multidict._multilib' is explicitly added to the `packages` configuration field. Alternatively, you can also rely on setuptools' discovery methods (for example by using `find_namespace_packages(...)`/`find_namespace:` instead of `find_packages(...)`/`find:`). You can read more about "package discovery" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html If you don't want 'multidict._multilib' to be distributed and are already explicitly excluding 'multidict._multilib' via `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`, you can try to use `exclude_package_data`, or `include-package-data=False` in combination with a more fine grained `package-data` configuration. You can read more about "package data files" on setuptools documentation page: - https://setuptools.pypa.io/en/latest/userguide/datafiles.html [^1]: For Python, any directory (with suitable naming) can be imported, even if it does not contain any `.py` files. On the other hand, currently there is no concept of package data directory, all directories are treated like packages. ******************************************************************************** !! check.warn(importable) copying multidict\__init__.pyi -> build\lib.win-amd64-cpython-313\multidict copying multidict\py.typed -> build\lib.win-amd64-cpython-313\multidict running build_ext building 'multidict._multidict' extension creating build\temp.win-amd64-cpython-313\Release\multidict "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD "-IF: \Program Files\CEX-snipers\.venv1\include" "-IC:\Program Files\Python313\include" "-IC:\Program Files\Python313\Include" "-IC:\Program Files (x86)\Microsoft Visu al Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Pro gram Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Window s Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\inclu de\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcmultidict/_multidict.c /Fobuild\temp.win-amd64-cpython-313\Release\multidict\_multidict.obj -O2 _multidict.c C:\Users\Administrator\AppData\Local\Temp\pip-install-a_qhru6_\multidict_78331f0e380e44a190a9c08ca64c358f\multidict\_multilib/iter.h(164): warning C4244: “函数”: 从“Py_ssize_t”转换到“long”,可能丢失数据 multidict/_multidict.c(453): warning C4013: “_PyArg_ParseStackAndKeywords”未定义;假设外部返回 int multidict/_multidict.c(712): warning C4013: “Py_TRASHCAN_SAFE_BEGIN”未定义;假设外部返回 int multidict/_multidict.c(718): warning C4013: “Py_TRASHCAN_SAFE_END”未定义;假设外部返回 int multidict/_multidict.c(1650): warning C4244: “函数”: 从“uint64_t”转换到“unsigned long”,可能丢失数据 "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\link.exe" /nologo /INCREMENTAL:NO /LTCG /DLL /MAN IFEST:EMBED,ID=2 /MANIFESTUAC:NO "/LIBPATH:F:\Program Files\CEX-snipers\.venv1\libs" "/LIBPATH:C:\Program Files\Python313\libs" "/LIBPATH:C:\Program Files\Python 313" "/LIBPATH:F:\Program Files\CEX-snipers\.venv1\PCbuild\amd64" "/LIBPATH:C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34 808\lib\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\lib\um\x64" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.22621.0\ucrt\x64" " /LIBPATH:C:\Program Files (x86)\Windows Kits\10\\lib\10.0.22621.0\\um\x64" /EXPORT:PyInit__multidict build\temp.win-amd64-cpython-313\Release\multidict\_multidic t.obj /OUT:build\lib.win-amd64-cpython-313\multidict\_multidict.cp313-win_amd64.pyd /IMPLIB:build\temp.win-amd64-cpython-313\Release\multidict\_multidict.cp313-win_amd64.lib 正在创建库 build\temp.win-amd64-cpython-313\Release\multidict\_multidict.cp313-win_amd64.lib 和对象 build\temp.win-amd64-cpython-313\Release\multidict\_multidict.cp313-win_amd64.exp _multidict.obj : error LNK2001: 无法解析的外部符号 Py_TRASHCAN_SAFE_END _multidict.obj : error LNK2001: 无法解析的外部符号 Py_TRASHCAN_SAFE_BEGIN build\lib.win-amd64-cpython-313\multidict\_multidict.cp313-win_amd64.pyd : fatal error LNK1120: 2 个无法解析的外部命令 error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.43.34808\\bin\\HostX86\\x64\\link.exe' failed with exit code 1120 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for multidict Building wheel for yarl (pyproject.toml) ... error error: subprocess-exited-with-error × Building wheel for yarl (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [83 lines of output] C:\Users\Administrator\AppData\Local\Temp\pip-build-env-k34ht6fh\overlay\Lib\site-packages\setuptools\dist.py:761: SetuptoolsDeprecationWarning: License classifiers are deprecated. !! ******************************************************************************** Please consider removing the following classifiers in favor of a SPDX license expression: License :: OSI Approved :: Apache Software License See https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#license for details. ******************************************************************************** !! self._finalize_license_expression() ********************** * Accelerated build * ********************** running bdist_wheel running build running build_py creating build\lib.win-amd64-cpython-313\yarl copying yarl\_quoting.py -> build\lib.win-amd64-cpython-313\yarl copying yarl\_quoting_py.py -> build\lib.win-amd64-cpython-313\yarl copying yarl\_url.py -> build\lib.win-amd64-cpython-313\yarl copying yarl\__init__.py -> build\lib.win-amd64-cpython-313\yarl running egg_info writing yarl.egg-info\PKG-INFO writing dependency_links to yarl.egg-info\dependency_links.txt writing requirements to yarl.egg-info\requires.txt writing top-level names to yarl.egg-info\top_level.txt reading manifest file 'yarl.egg-info\SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no previously-included files matching '*.pyc' found anywhere in distribution warning: no previously-included files matching '*.cache' found anywhere in distribution warning: no previously-included files found matching 'yarl\*.html' warning: no previously-included files found matching 'yarl\*.so' warning: no previously-included files found matching 'yarl\*.pyd' no previously-included directories found matching 'docs\_build' adding license file 'LICENSE' writing manifest file 'yarl.egg-info\SOURCES.txt' copying yarl\__init__.pyi -> build\lib.win-amd64-cpython-313\yarl copying yarl\_quoting_c.pyi -> build\lib.win-amd64-cpython-313\yarl copying yarl\_quoting_c.pyx -> build\lib.win-amd64-cpython-313\yarl copying yarl\py.typed -> build\lib.win-amd64-cpython-313\yarl running build_ext building 'yarl._quoting_c' extension creating build\temp.win-amd64-cpython-313\Release\yarl "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD "-IF: \Program Files\CEX-snipers\.venv1\include" "-IC:\Program Files\Python313\include" "-IC:\Program Files\Python313\Include" "-IC:\Program Files (x86)\Microsoft Visu al Studio\2022\BuildTools\VC\Tools\MSVC\14.43.34808\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Pro gram Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Window s Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\inclu de\10.0.22621.0\\cppwinrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.8\include\um" /Tcyarl/_quoting_c.c /Fobuild\temp.win-amd64-cpython-313\Release\yarl\_quoting_c.obj _quoting_c.c yarl/_quoting_c.c(825): warning C4996: 'Py_UNICODE': deprecated in 3.13 yarl/_quoting_c.c(826): warning C4996: 'Py_UNICODE': deprecated in 3.13 yarl/_quoting_c.c(3732): warning C4244: “=”: 从“Py_ssize_t”转换到“int”,可能丢失数据 yarl/_quoting_c.c(5166): warning C4996: 'Py_OptimizeFlag': deprecated in 3.12 yarl/_quoting_c.c(5471): warning C4996: 'Py_OptimizeFlag': deprecated in 3.12 yarl/_quoting_c.c(5505): warning C4996: 'Py_OptimizeFlag': deprecated in 3.12 yarl/_quoting_c.c(7580): warning C4013: “_PyGC_FINALIZED”未定义;假设外部返回 int yarl/_quoting_c.c(8944): warning C4013: “_PyUnicode_Ready”未定义;假设外部返回 int yarl/_quoting_c.c(9121): error C2039: "curexc_traceback": 不是 "_ts" 的成员 C:\Program Files\Python313\include\cpython/pystate.h(59): note: 参见“_ts”的声明 yarl/_quoting_c.c(9124): error C2039: "curexc_traceback": 不是 "_ts" 的成员 C:\Program Files\Python313\include\cpython/pystate.h(59): note: 参见“_ts”的声明 yarl/_quoting_c.c(10674): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 yarl/_quoting_c.c(10729): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 yarl/_quoting_c.c(10815): error C2198: “int _PyLong_AsByteArray(PyLongObject *,unsigned char *,size_t,int,int,int)”: 用于调用的参数太少 yarl/_quoting_c.c(10870): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 yarl/_quoting_c.c(10925): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 yarl/_quoting_c.c(11011): error C2198: “int _PyLong_AsByteArray(PyLongObject *,unsigned char *,size_t,int,int,int)”: 用于调用的参数太少 yarl/_quoting_c.c(11066): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 yarl/_quoting_c.c(11121): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 yarl/_quoting_c.c(11207): error C2198: “int _PyLong_AsByteArray(PyLongObject *,unsigned char *,size_t,int,int,int)”: 用于调用的参数太少 yarl/_quoting_c.c(11359): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 yarl/_quoting_c.c(11414): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 yarl/_quoting_c.c(11500): error C2198: “int _PyLong_AsByteArray(PyLongObject *,unsigned char *,size_t,int,int,int)”: 用于调用的参数太少 yarl/_quoting_c.c(11865): error C2039: "ob_digit": 不是 "_longobject" 的成员 C:\Program Files\Python313\include\cpython/longintrepr.h(98): note: 参见“_longobject”的声明 error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.43.34808\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2 [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for yarl Failed to build cffi frozenlist multidict yarl [notice] A new release of pip is available: 25.0.1 -> 25.1.1 [notice] To update, run: python.exe -m pip install --upgrade pip ERROR: Failed to build installable wheels for some pyproject.toml based projects (cffi, frozenlist, multidict, yarl) (.venv1) PS F:\Program Files\CEX-snipers>

filetype

这是我之前做过的一个项目,把这个设计结构有用的也加入到之前的项目中,做一个最全的:后端项目结构深度解析:testrealend 项目 一、项目根目录核心文件 plaintext testrealend/ ├── app.py # Flask应用主入口 │ api # 职责:创建应用实例、配置扩展、注册API路由 ├── requirements.txt # 依赖包清单(pip install -r 安装) ├── add_user_script.py # 管理员账户初始化脚本 ├── update_user_script.py # 用户信息更新脚本 ├── temp_qrcode.png # 临时二维码图片(水印功能相关) ├── embed/ # 水印嵌入后ZIP文件存储目录 │ # 文件名格式:员工ID_时间戳_嵌入结果.zip ├── compare/ # 水印比对文件目录(原始/提取水印对比) ├── static/ # 静态资源目录(CSS/JS/图片,当前项目未直接使用) └── templates/ # HTML模板目录(后端渲染页面时使用,当前项目为空) 二、核心功能模块解析 (1)API 接口层:resource/ plaintext src/resource/ ├── common_resource.py # 通用接口:注册(Register)、登录(Login)、登出(Logout) ├── adm_resource.py # 管理员接口:员工管理、水印操作 ├── emp_resource.py # 员工接口:数据申请、下载、查看 ├── shp_data_resource.py # SHP数据接口:列表查询、ID检索(重点修改模块) ├── application_resource.py # 数据申请接口:提交/审批流程 ├── nav_resource.py # 导航菜单接口:权限动态渲染 ├── generate_watermark.py # 水印生成接口:二维码/文本转水印 ├── embed_watermark.py # 水印嵌入接口:SHP文件处理 ├── download_file_resource.py # 文件下载接口:权限控制 ├── receive_zip_to_extract.py # ZIP上传接口:解压与验证 └── __init__.py # 包初始化文件 核心逻辑: • 每个.py文件对应一类业务场景,通过Flask-RESTful的Resource类定义 HTTP 接口(GET/POST/PUT/DELETE) • 接口路径通过api.add_resource(ResourceClass, '/api/path')在app.py中注册 (2)业务逻辑层:server/ plaintext src/server/ ├── shp_data_server.py # SHP数据业务逻辑:数据库查询、文件处理 ├── adm_server.py # 管理员业务逻辑:账户管理、权限校验 ├── emp_server.py # 员工业务逻辑:数据权限控制 ├── common_server.py # 通用业务逻辑:用户认证、 token管理 ├── application_server.py # 数据申请业务逻辑:流程状态管理(注意:拼写应为application) └── __init__.py # 包初始化文件 设计模式: • 资源类(Resource)接收请求后,调用对应服务类(Server)的方法执行具体逻辑 • 实现接口层与业务层解耦,便于单元测试和逻辑复用 (3)数据模型层:model/ plaintext src/model/ ├── Shp_Data.py # SHP文件模型:存储文件元信息(路径/属性/状态) ├── Adm_Account.py # 管理员账户模型:用户名/密码哈希/权限等级 ├── Employee_Info.py # 员工信息模型:基本资料/部门/角色 ├── Application.py # 数据申请模型:申请记录/审批状态/时间戳 └── __init__.py # 包初始化文件 技术细节: • 使用SQLAlchemy ORM映射数据库表,支持db.Model继承 • 字段定义包含String/Integer/DateTime等类型,部分字段设置unique/index索引 (4)算法模块:algorithm/ plaintext src/algorithm/ ├── NC.py # 归一化相关系数算法(水印相似度计算) ├── embed.py # 水印嵌入算法:SHP文件空间域修改 ├── extract.py # 水印提取算法:信号检测与解码 ├── get_coor.py # 坐标提取工具:从SHP获取几何坐标 ├── is_multiple.py # 倍数判断工具:坐标精度处理 ├── to_geodataframe.py # 地理数据转换:SHP转GeoDataFrame ├── embed/ # 水印嵌入测试数据目录 └── __init__.py # 包初始化文件 (5)扩展与工具:extension/ & utils/ • extension/ plaintext src/extension/ ├── extension.py # 扩展初始化:db(SQLAlchemy)/limiter(请求限流) └── __init__.py • utils/ plaintext src/utils/ ├── required.py # 请求参数校验:必填字段检查 └── __init__.py (6)通用工具:common/ plaintext src/common/ ├── api_tools.py # API辅助函数:响应格式化/错误处理 ├── constants.py # 项目常量:状态码/路径前缀/权限标识 └── __init__.py 三、数据库与配置模块 (1)数据库迁移:migrations/ plaintext src/migrations/ ├── alembic.ini # Alembic配置文件 ├── env.py # 数据库连接配置(生产/开发环境区分) ├── script.py.mako # 迁移脚本模板 └── versions/ # 具体迁移脚本目录(每个版本一个.py文件) 使用场景: • 模型变更时通过flask db migrate生成脚本,flask db upgrade更新数据库 (2)IDE 配置与缓存:.idea/ & pycache/ • .idea/:PyCharm 项目配置(勿手动修改,已加入.gitignore) • __pycache__/:Python 字节码缓存(自动生成,提升模块加载速度)

filetype

后端项目结构深度解析:testrealend 项目 一、项目根目录核心文件 plaintext testrealend/ ├── app.py # Flask应用主入口 │ # 职责:创建应用实例、配置扩展、注册API路由 ├── requirements.txt # 依赖包清单(pip install -r 安装) ├── add_user_script.py # 管理员账户初始化脚本 ├── update_user_script.py # 用户信息更新脚本 ├── temp_qrcode.png # 临时二维码图片(水印功能相关) ├── embed/ # 水印嵌入后ZIP文件存储目录 │ # 文件名格式:员工ID_时间戳_嵌入结果.zip ├── compare/ # 水印比对文件目录(原始/提取水印对比) ├── static/ # 静态资源目录(CSS/JS/图片,当前项目未直接使用) └── templates/ # HTML模板目录(后端渲染页面时使用,当前项目为空) 二、核心功能模块解析 (1)API 接口层:resource/ plaintext src/resource/ ├── common_resource.py # 通用接口:注册(Register)、登录(Login)、登出(Logout) ├── adm_resource.py # 管理员接口:员工管理、水印操作 ├── emp_resource.py # 员工接口:数据申请、下载、查看 ├── shp_data_resource.py # SHP数据接口:列表查询、ID检索(重点修改模块) ├── application_resource.py # 数据申请接口:提交/审批流程 ├── nav_resource.py # 导航菜单接口:权限动态渲染 ├── generate_watermark.py # 水印生成接口:二维码/文本转水印 ├── embed_watermark.py # 水印嵌入接口:SHP文件处理 ├── download_file_resource.py # 文件下载接口:权限控制 ├── receive_zip_to_extract.py # ZIP上传接口:解压与验证 └── __init__.py # 包初始化文件 核心逻辑: • 每个.py文件对应一类业务场景,通过Flask-RESTful的Resource类定义 HTTP 接口(GET/POST/PUT/DELETE) • 接口路径通过api.add_resource(ResourceClass, '/api/path')在app.py中注册 (2)业务逻辑层:server/ plaintext src/server/ ├── shp_data_server.py # SHP数据业务逻辑:数据库查询、文件处理 ├── adm_server.py # 管理员业务逻辑:账户管理、权限校验 ├── emp_server.py # 员工业务逻辑:数据权限控制 ├── common_server.py # 通用业务逻辑:用户认证、 token管理 ├── application_server.py # 数据申请业务逻辑:流程状态管理(注意:拼写应为application) └── __init__.py # 包初始化文件 设计模式: • 资源类(Resource)接收请求后,调用对应服务类(Server)的方法执行具体逻辑 • 实现接口层与业务层解耦,便于单元测试和逻辑复用 (3)数据模型层:model/ plaintext src/model/ ├── Shp_Data.py # SHP文件模型:存储文件元信息(路径/属性/状态) ├── Adm_Account.py # 管理员账户模型:用户名/密码哈希/权限等级 ├── Employee_Info.py # 员工信息模型:基本资料/部门/角色 ├── Application.py # 数据申请模型:申请记录/审批状态/时间戳 └── __init__.py # 包初始化文件 技术细节: • 使用SQLAlchemy ORM映射数据库表,支持db.Model继承 • 字段定义包含String/Integer/DateTime等类型,部分字段设置unique/index索引 (4)算法模块:algorithm/ plaintext src/algorithm/ ├── NC.py # 归一化相关系数算法(水印相似度计算) ├── embed.py # 水印嵌入算法:SHP文件空间域修改 ├── extract.py # 水印提取算法:信号检测与解码 ├── get_coor.py # 坐标提取工具:从SHP获取几何坐标 ├── is_multiple.py # 倍数判断工具:坐标精度处理 ├── to_geodataframe.py # 地理数据转换:SHP转GeoDataFrame ├── embed/ # 水印嵌入测试数据目录 └── __init__.py # 包初始化文件 (5)扩展与工具:extension/ & utils/ • extension/ plaintext src/extension/ ├── extension.py # 扩展初始化:db(SQLAlchemy)/limiter(请求限流) └── __init__.py • utils/ plaintext src/utils/ ├── required.py # 请求参数校验:必填字段检查 └── __init__.py (6)通用工具:common/ plaintext src/common/ ├── api_tools.py # API辅助函数:响应格式化/错误处理 ├── constants.py # 项目常量:状态码/路径前缀/权限标识 └── __init__.py 三、数据库与配置模块 (1)数据库迁移:migrations/ plaintext src/migrations/ ├── alembic.ini # Alembic配置文件 ├── env.py # 数据库连接配置(生产/开发环境区分) ├── script.py.mako # 迁移脚本模板 └── versions/ # 具体迁移脚本目录(每个版本一个.py文件) 使用场景: • 模型变更时通过flask db migrate生成脚本,flask db upgrade更新数据库 (2)IDE 配置与缓存:.idea/ & pycache/ • .idea/:PyCharm 项目配置(勿手动修改,已加入.gitignore) • __pycache__/:Python 字节码缓存(自动生成,提升模块加载速度) 这是什么等级的项目,这是我一个朋友的项目,我觉得他的这个很好,你参考一下,结合多个csdn的文章,做一个最好最全面的后端设计

实话直说
  • 粉丝: 47
上传资源 快速赚钱