“导入错误:无法导入名称'base_impl'”运行独立的 python zipapp 可执行文件时

问题描述 投票:0回答:1

我正在运行 oracle linux 7.9 和 python 3.6.8。我按照 this 教程创建了一个独立的 python zipapp 可执行文件。当我运行生成的可执行文件时,出现以下错误(1m 只是脚本期望的参数)

oracle@hostname:~/scripts/inspirit/ora_runner2> python3 standalone_ora_runner_native.pyz 1m
Traceback (most recent call last):
  File "/usr/lib64/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/usr/lib64/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "standalone_ora_runner_native.pyz/__main__.py", line 71, in <module>
  File "standalone_ora_runner_native.pyz/oracledb/__init__.py", line 56, in <module>
  File "standalone_ora_runner_native.pyz/oracledb/connection.py", line 45, in <module>
ImportError: cannot import name 'base_impl'

base_impl 是 oracledb 库尝试导入但失败的模块。 oracledb文件夹的内容如下

oracle@hostname:~/scripts/inspire/ora_runner2/standalone_testing/oracledb> ll
total 28588
-rw-r--r-- 1 oracle oinstall    19013 Nov  9 13:32 aq.py
-rwxr-xr-x 1 oracle oinstall  8927248 Nov  9 13:32 base_impl.cpython-36m-x86_64-linux-gnu.so
-rw-r--r-- 1 oracle oinstall    49764 Nov  9 13:32 connection.py
-rw-r--r-- 1 oracle oinstall    32021 Nov  9 13:32 connect_params.py
-rw-r--r-- 1 oracle oinstall     4001 Nov  9 13:32 constants.py
-rw-r--r-- 1 oracle oinstall     2909 Nov  9 13:32 constructors.py
-rw-r--r-- 1 oracle oinstall    35714 Nov  9 13:32 cursor.py
-rw-r--r-- 1 oracle oinstall    11852 Nov  9 13:32 dbobject.py
-rw-r--r-- 1 oracle oinstall     1827 Nov  9 13:32 defaults.py
-rw-r--r-- 1 oracle oinstall     5403 Nov  9 13:32 driver_mode.py
-rw-r--r-- 1 oracle oinstall     3130 Nov  9 13:32 dsn.py
-rw-r--r-- 1 oracle oinstall    22861 Nov  9 13:32 errors.py
-rw-r--r-- 1 oracle oinstall     1811 Nov  9 13:32 exceptions.py
-rw-r--r-- 1 oracle oinstall     5679 Nov  9 13:32 fetch_info.py
-rw-r--r-- 1 oracle oinstall     1995 Nov  9 13:32 future.py
-rw-r--r-- 1 oracle oinstall     6172 Nov  9 13:32 __init__.py
-rw-r--r-- 1 oracle oinstall     6078 Nov  9 13:32 lob.py
-rw-r--r-- 1 oracle oinstall    31742 Nov  9 13:32 pool_params.py
-rw-r--r-- 1 oracle oinstall    35264 Nov  9 13:32 pool.py
drwxr-xr-x 2 oracle oinstall     4096 Nov  9 13:32 __pycache__
-rw-r--r-- 1 oracle oinstall        0 Nov  9 13:32 py.typed
-rw-r--r-- 1 oracle oinstall    28158 Nov  9 13:32 soda.py
-rw-r--r-- 1 oracle oinstall    11078 Nov  9 13:32 subscr.py
-rwxr-xr-x 1 oracle oinstall  5944536 Nov  9 13:32 thick_impl.cpython-36m-x86_64-linux-gnu.so
-rwxr-xr-x 1 oracle oinstall 14027328 Nov  9 13:32 thin_impl.cpython-36m-x86_64-linux-gnu.so
-rw-r--r-- 1 oracle oinstall     3382 Nov  9 13:32 utils.py
-rw-r--r-- 1 oracle oinstall     6629 Nov  9 13:32 var.py
-rw-r--r-- 1 oracle oinstall     1533 Nov  9 13:32 version.py

我如何准备zipapp

  • python -m pip install -r requests.txt --target ora_runner/
  • python -m zipapp ora_runner/-ostandalone_ora_runner_native.pyz -p“python”

this帖子中的问题与我在类似条件下的问题相同,评论中有人建议这是因为系统由于缺少可再发行包等而无法运行cpython。如果有人能够详细说明这一点,我将不胜感激,因为我认为这可能是问题所在。

提前致谢!

python-3.x pip cpython python-oracledb zipapp
1个回答
0
投票
快速浏览一下 zipapp,我发现它假定是一个纯 Python 应用程序。 oracledb 包包含扩展模块(其中之一是 base_impl),并且这些“无法”从 zip 文件内加载。您需要从 zipapp 包中排除 oracledb 并单独安装它。

© www.soinside.com 2019 - 2024. All rights reserved.