我在本地机器上使用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,但都没有解决(假设的)问题。在
在每个进程上运行
strace
之后,纯python版本似乎正在寻找文件_psycopg.cpython-32mu.so
而cxfreeze构建的二进制文件正在查找文件
^{pr2}$psycopg2._psycopg.so
md5sum
显示这些文件是相同的,因此cxfreeze进程似乎更改了动态库的预期名称。值得注意的是,cxfreeze输出的dist
目录中包含了一个正确命名目标的库的版本。在相关问题 更多 >
编程相关推荐