cx\u freeze无法在runtim导入psycopg2共享库

2024-04-18 13:54:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在本地机器上使用cxfreeze(在python3.2virtualenv中)构建了一个可执行文件。 可执行文件在本地计算机上正确运行。在

我尝试在一个单独的目标机器上运行可执行文件(操作系统和体系结构相同),但出现以下错误:

  ...
  File "/home/chris/.virtualenvs/python3env/lib/python3.2/site-packages/psycopg2/__init__.py", line 67, in <module>
  File "ExtensionLoader_psycopg2__psycopg.py", line 18, in <module>
  ImportError: No module named None

目标机器上满足了所有共享库依赖项(根据ldd)。在

根据跟踪,我猜测psycopg2试图加载共享库_psycopg.cpython-32mu.so(本地python3.2/site-packages/psycopg2/_psycopg.cpython-32mu.so),但在运行时找不到它。在

我尝试将库与可执行文件放在同一个目录中,并设置LD_library_PATH,但都没有解决(假设的)问题。在


Tags: inpy机器可执行文件目标sopackagesline
1条回答
网友
1楼 · 发布于 2024-04-18 13:54:44

在每个进程上运行strace之后,纯python版本似乎正在寻找文件_psycopg.cpython-32mu.so

open("/home/chris/.virtualenvs/python3env/lib/python3.2/site-packages/psycopg2/_psycopg.cpython-32mu.so", O_RDONLY|O_CLOEXEC) = 8

而cxfreeze构建的二进制文件正在查找文件psycopg2._psycopg.so

^{pr2}$

md5sum显示这些文件是相同的,因此cxfreeze进程似乎更改了动态库的预期名称。值得注意的是,cxfreeze输出的dist目录中包含了一个正确命名目标的库的版本。在

相关问题 更多 >