我正在尝试在Linux上使用pyinstaller 2.0生成Python脚本的二进制版本。当我跑步时:
$ python pyinstaller.py myscript.py
我得到错误:
8907 INFO: Looking for Python library libpython2.7.so
Traceback (most recent call last):
...
File "pyinstaller.py", line 91, in <module>
raise IOError("Python library not found!")
IOError: Python library not found!
如何解决这个问题?
我正在使用:
Linux 98 Ubuntu x86_64 GNU/Linux
使用python 2.7。系统上还有其他的蟒蛇,但我已经设置了:
alias python="python2.7"
在我正在使用的服务器中,只有
/usr/lib/python2.6
而不是/usr/lib/python2.7
但是python 2.7是我经常使用的,而且是功能性的,等等,所以我不明白为什么查找它的库会有问题。有一个/usr/local/lib/libpython2.7.a
。 最佳答案
在我使用的服务器中,只有/usr/lib/python2.6,而不是/usr/lib/python2.7,但是python2.7是我经常使用的,而且功能正常,等等,所以我不明白为什么查找它的库会有问题。有a/usr/local/lib/libpython2.7.a。
如果没有,那么找到这个库当然是个问题。
之所以能够使用Python解释器,可能是因为它是静态链接的。
有两种方法可以解决这个问题。
首先,您可以为您的python 2.7安装共享库。如果您使用的是早期版本的Ubuntu,比如说,python 2.6,并且您从libpython2.7.so
包中安装了2.7,那么这应该只是安装python2.7
的问题。
如果您从其他来源获得了2.7,那么Ubuntulibpython2.7
包显然将无法工作,或者它将通过安装第二个libpython2.7
副本来工作,可能会覆盖您已经拥有的某些文件,并且肯定会使您困惑。不管怎样,不要这样做。要么为现有的2.7获取其余的python,要么卸载2.7并使用Ubuntu包。(对于某些Python发行版,“获取其余部分”是不可能的,因为如果安装共享的libs,将获得动态链接的Python可执行文件,而不是静态链接的。在这种情况下,您几乎必须卸载和重新安装。)
其次,可以使用python2.7
的静态lib支持。有关详细信息,请参见ticket 420,但简单的想法是,如果启用了此功能,并且pyinstaller认为您的平台应该有一个PyInstaller
但找不到它,那么它将寻找一个libpython2.7.so
并静态链接。上次我需要这个的时候,它没有登记进后备箱。快速浏览一下记录单,它看起来像现在包含了补丁,但默认情况下禁用了libpython2.7.a
构建,并且里程碑设置为3.0,因此,您可能仍然需要手动构建PyInstaller
才能使其生效。
最后一件事:有可能你确实有libpython2.7.so,但是它只是安装在一些奇怪的地方,比如PyInstaller
或者其他什么东西,在你的路径上没有任何/opt/python27/lib
的地方,但是/opt/python27
可以找到它,因为它是专门为从/usr/local/bin/python27
中得到东西而构建的。这类问题只会出现在拥有MacPorts或Fink的Mac用户身上,而不是Linux用户身上,但并非不可能。如果您认为这可能是问题所在,那么可以查看dl表中的/opt/python27
。
关于python - 在制作二进制文件时,PyInstaller找不到libpython2.7.so?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14677359/