我正在尝试使用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
然而,它并没有解决这个问题。
发布于 2018-07-29 17:39:15
如果你像我一样通过pyenv使用python,你可能需要重新安装并启用共享来访问xcode库,除非你之前已经这样做了。
sudo env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 2.7
附言:我在达尔文,但仍然比enable-framework
工作的enable-shared
实际上,下面的错误消息告诉我们要做什么
发布于 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补丁版本,看看它是否能像我一样帮助您解决这个问题。
https://stackoverflow.com/questions/38920076
复制相似问题