社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

在Azure Devops上的Linux上的pyinstaller中找不到Python库

孔祥瑞 • 6 年前 • 783 次点击  

我在Linux中安装了python

$ which python
/grid/common/pkgs/python/v2.7.6/bin/python

我还有pyinstaller

$ which pyinstaller
/grid/common/pkgs/python/v2.7.6/bin/pyinstaller

现在我已经在/home/username/test/directory中创建了一个示例python文件hello.py

print "Hello World!!"

使用pyinstaller,当我试图使用以下命令为它创建一个可执行文件时,我得到

IOError:找不到Python库:libpython2.7mu.so.1.0, libpython2.7.so.1.0,libpython2.7m.so.1.0

 $ pyinstaller hello.py

 532 INFO: PyInstaller: 3.2.1
 532 INFO: Python: 2.7.6
 534 INFO: Platform: Linux-2.6.18-371.el5-x86_64-with-redhat-5.10-Tikanga
 536 INFO: wrote /home/username/test/hello.spec
 591 INFO: UPX is not available.
 602 INFO: Extending PYTHONPATH with paths
 ['/home/username/test', '/home/username/test']
 602 INFO: checking Analysis
 602 INFO: Building Analysis because out00-Analysis.toc is non existent
 603 INFO: Initializing module dependency graph...
 639 INFO: Initializing module graph hooks...
 757 INFO: running Analysis out00-Analysis.toc
 819 INFO: Caching module hooks...
 858 INFO: Analyzing /home/username/test/hello.py
 859 INFO: Loading module hooks...
 860 INFO: Loading module hook "hook-encodings.py"...
 6735 INFO: Looking for ctypes DLLs
 6736 INFO: Analyzing run-time hooks ...
 6741 INFO: Looking for dynamic libraries
 7285 INFO: Looking for eggs
 7286 INFO: Python library not in binary depedencies. Doing additional searching...
 Traceback (most recent call last):
 File "/grid/common/pkgs/python/v2.7.6/bin/pyinstaller", line 9, in <module>
   load_entry_point('PyInstaller==3.2.1', 'console_scripts', 'pyinstaller')()
 File "/grid/common/pkgs/python/v2.7.6/lib/python2.7/site-
 packages/PyInstaller-3.2.1-py2.7.egg/PyInstaller/__main__.py", line 90, in run
   run_build(pyi_config, spec_file, **vars(args))
 File "/grid/common/pkgs/python/v2.7.6/lib/python2.7/site-
 packages/PyInstaller-3.2.1-py2.7.egg/PyInstaller/__main__.py", line 46, in 
   run_build PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
 File "/grid/common/pkgs/python/v2.7.6/lib/python2.7/site-
 packages/PyInstaller-3.2.1-py2.7.egg/PyInstaller/building/build_main.py", 
 line 788, in main
   build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
 File "/grid/common/pkgs/python/v2.7.6/lib/python2.7/site-
 packages/PyInstaller-3.2.1-py2.7.egg/PyInstaller/building/build_main.py",      
 line 734, in build
   exec(text, spec_namespace)
 File "<string>", line 16, in <module>
 File "/grid/common/pkgs/python/v2.7.6/lib/python2.7/site-     
 packages/PyInstaller-3.2.1-py2.7.egg/PyInstaller/building/build_main.py", 
 line 212, in __init__
   self.__postinit__()
 File "/grid/common/pkgs/python/v2.7.6/lib/python2.7/site-
 packages/PyInstaller-3.2.1-py2.7.egg/PyInstaller/building/datastruct.py", 
 line 161, in __postinit__
   self.assemble()
 File "/grid/common/pkgs/python/v2.7.6/lib/python2.7/site-
 packages/PyInstaller-3.2.1-py2.7.egg/PyInstaller/building/build_main.py", 
 line 543, in assemble
   self._check_python_library(self.binaries)
 File "/grid/common/pkgs/python/v2.7.6/lib/python2.7/site-
 packages/PyInstaller-3.2.1-py2.7.egg/PyInstaller/building/build_main.py", 
 line 626, in _check_python_library
   raise IOError(msg)
 IOError: Python library not found: libpython2.7mu.so.1.0, libpython2.7.so.1.0, libpython2.7m.so.1.0
 This would mean your Python installation doesn't come with proper library files.
 This usually happens by missing development package, or unsuitable build parameters of Python installation.

 * On Debian/Ubuntu, you would need to install Python development packages
 * apt-get install python3-dev
 * apt-get install python-dev
 * If you're building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)

请告诉我如何解决此错误并使用它创建单个可执行文件。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50483
文章 [ 1 ]  |  最新文章 6 年前
Gino Mempin
Reply   •   1 楼
Gino Mempin    7 年前

你好像有点不标准 python 安装:

我在Linux中安装了python

$ which python 
/grid/common/pkgs/python/v2.7.6/bin/python

可能会导致 pyinstaller 找不到 libpython 系统中的文件。从 When Things Go Wrong 部分 pyinstaller安装程序 文件:

但是,其中一个错误可能令人费解: IOError("Python library not found!") PyInstaller需要打包Python库,它是 Python解释器的主要部分,作为动态负载链接 图书馆。此文件的名称和位置因 正在使用平台。

在Linux和Python2.7上,当您安装 python2.7-dev ,那些 libpython* 文件通常位于 /usr/lib/x86_64-linux-gnu/ :

$ apt-get install python2.7-dev
$ find /usr/lib -name libpython*
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7-pic.a
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.a
/usr/lib/python2.7/config-x86_64-linux-gnu/libpython2.7.so
/usr/lib/x86_64-linux-gnu/libpython2.7.a
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1
/usr/lib/x86_64-linux-gnu/libpython2.7.so

在我的机器上,当我跑 pyinstaller安装程序 在不设置任何其他选项的情况下,它会自动使用 libpython语言 /usr/lib/x86_64-linux-gnu :

1632 INFO: Python library not in binary dependencies. Doing additional searching...
1654 INFO: Using Python library /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 

对于使用非标准路径的案例,该帮助页还提供了一个解决方案:

PyInstaller查找python库的位置是 在不同的操作系统中是不同的,但是 /lib /usr/lib 是 已签入大多数系统。如果你不能把python库放在那里, 尝试在环境变量中设置正确的路径 LD_LIBRARY_PATH 在Linux或 DYLD_LIBRARY_PATH 在OSX中。

现在,我不知道你是如何在你的系统上安装Python的,所以我不知道你的 libpython语言 文件是(或者如果它们甚至存在)。你能做的是:

  1. 找到通往 libpython语言 文件夹
    • 可能在下面 /grid/common/pkgs/python/v2.7.6/lib ?
    • 你可以的 find /path/to/pkgs -name libpython*
  2. 如果没有 libpython语言 文件,你需要先安装它。
    • 在Linux上,这通常由 apt-get install python2.7-dev
  3. 将路径添加到 libpython语言* 文件到您的 图书馆路径

另一方面,我不熟悉Azure DevOps(如您在标题中所示),但我不建议安装 蟒蛇 (以及所有其他dep/packages)到一些非标准路径,特别是当您需要引用它的其他工具时。