首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >mac上的PyInstaller找不到libpython2.7

mac上的PyInstaller找不到libpython2.7
EN

Stack Overflow用户
提问于 2016-08-12 22:09:56
回答 2查看 2K关注 0票数 2

我正在尝试使用PyInstaller 2.0创建Python脚本的二进制版本。我使用了一个基本的"hello world“tkinter脚本,但导入了一些依赖项,以便项目测试Pyinstaller。我在一台运行Yosemite 10.10.5的mac上。这是我的脚本:

#!/usr/bin/env python
from Tkinter import *
import Tix
import tkMessageBox
from sklearn import linear_model, decomposition, preprocessing
from sklearn.preprocessing import Imputer
from sklearn.cross_validation import cross_val_score, cross_val_predict
from sklearn.neighbors import KDTree 
import numpy as np
import collections
import array
import math
import csv
from collections import OrderedDict
import matplotlib
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt
import matplotlib.dates as dates
from matplotlib.mlab import PCA
from mpl_toolkits.mplot3d import Axes3D
from scipy.stats import mode
import heapq
import sqlite3
from sqlite3 import datetime


root = Tk()

w = Label(root, text="Hello, world!")
w.pack()

root.mainloop()

这运行得很完美。但是,当我使用以下命令构建二进制文件时

$pyinstaller -w -F app.py 

然后我得到了这个错误:

57665 ERROR: Can not find path ./libpython2.7.dylib (needed by //anaconda/bin/python)
Traceback (most recent call last):
  File "//anaconda/bin/pyinstaller", line 11, in <module>
    sys.exit(run())
  File "//anaconda/lib/python2.7/site-packages/PyInstaller/__main__.py", line 90, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "//anaconda/lib/python2.7/site-packages/PyInstaller/__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "//anaconda/lib/python2.7/site-packages/PyInstaller/building/build_main.py", line 788, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "//anaconda/lib/python2.7/site-packages/PyInstaller/building/build_main.py", line 734, in build
    exec(text, spec_namespace)
  File "<string>", line 16, in <module>
  File "//anaconda/lib/python2.7/site-packages/PyInstaller/building/build_main.py", line 212, in __init__
    self.__postinit__()
  File "//anaconda/lib/python2.7/site-packages/PyInstaller/building/datastruct.py", line 178, in __postinit__
    self.assemble()
  File "//anaconda/lib/python2.7/site-packages/PyInstaller/building/build_main.py", line 543, in assemble
    self._check_python_library(self.binaries)
  File "//anaconda/lib/python2.7/site-packages/PyInstaller/building/build_main.py", line 626, in _check_python_library
    raise IOError(msg)
IOError: Python library not found: libpython2.7.dylib, Python, .Python
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)

有谁知道我该怎么解决这个问题吗?当我在没有额外依赖的情况下使用基本的hello world示例时,也会出现这个错误。我将libpython2.7.dylib文件放在//anaconda/lib中,并尝试使用以下命令将其链接到usr/lib/

$sudo ln -s /usr/local/lib/libpython2.7.dylib //anaconda/lib/libpython2.7.dylib

然而,它并没有解决这个问题。

EN

回答 2

Stack Overflow用户

发布于 2018-07-29 17:39:15

如果你像我一样通过pyenv使用python,你可能需要重新安装并启用共享来访问xcode库,除非你之前已经这样做了。

sudo env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 2.7

附言:我在达尔文,但仍然比enable-framework工作的enable-shared

实际上,下面的错误消息告诉我们要做什么

票数 2
EN

Stack Overflow用户

发布于 2016-08-17 23:46:05

首先,我看到你在使用conda。我在Mac上遇到了完全相同的问题,特别是:

ERROR: Can not find path ./libpython2.7.dylib

尝试部署我在conda环境中组装的应用程序。

经过大量的谷歌搜索和阅读,我发现当前的PyInstaller不能很好地处理带有@rpath引用的动态库。您可以通过在python二进制文件上运行"otool -L“来确认库引用使用了@rpath,它看起来像//anaconda/bin/python (可能是指向//anaconda/bin/python2.7的链接)。

幸运的是,这个问题最近在conda的PyInstaller分支上得到了解决。具体的补丁程序位于https://github.com/conda-forge/pyinstaller-feedstock/pull/2

为了使用这个派生版本,我通过pip卸载了我在conda环境中下载的PyInstaller,然后按照https://github.com/conda-forge/pyinstaller-feedstock的说明在conda环境中使用这个PyInstaller派生版本。具体地说,这些命令:

conda config --add channels conda-forge
conda install pyinstaller

因此,我建议切换到这个专门针对conda环境的PyInstaller补丁版本,看看它是否能像我一样帮助您解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38920076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档