“ImportError:cannot import name 'base_impl'" while running standalone python zipapp executable

30byixjq  于 8个月前  发布在  Python
关注(0)|答案(1)|浏览(106)

我正在使用python 3.6.8运行oracle Linux 7.9。我按照this教程创建了一个独立的python zipapp可执行文件。当我运行结果可执行文件时,我得到以下错误(1 m只是脚本需要的参数)

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 library尝试导入但失败。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 requirements.txt --target ora_runner/
  • python -m zipapp ora_runner/ -o standalone_ora_runner_native.pyz -p“python”

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

6ju8rftf

6ju8rftf1#

快速浏览一下zipapp,我看到它假设一个纯Python应用程序。oracledb包包含扩展模块(其中之一是base_impl),这些模块不能从zip文件中加载。您需要将oracledb从zipapp包中排除,并单独安装。

相关问题