2016-08-12 6 views
2

PyInstaller 2.0を使用してPythonスクリプトのバイナリバージョンを作成しようとしています。私は基本的な "hello world" tkinterスクリプトを使用していますが、Pyinstallerをテストするプロジェクトに必要ないくつかの依存関係をインポートしました。私はヨセミテを走っているMacの10.10.5です。 これは私のスクリプトです:MacのPyInstallerでlibpython2.7が見つからない

#!/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の例を使用している場合にも発生します。 、私はlibに//アナコンダ/中libpython2.7.dylibファイルを持っていると私はそれがまず...

答えて

1

を問題を修正されていませんが

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

を使用しては/ usr/libににリンクしてみました私はあなたがコンドを使用しているのを見ます。私は具体的には、Mac上で正確に同じ問題に遭遇した:

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

は、私がconda環境にまとめアプリを展開しようとしています。

多くのグーグルと読書の後、私は現在のPyInstallerが@rpath参照のダイナミックライブラリをうまく処理していないことを発見しました。 Pythonバイナリで "otool -L"を実行することで、ライブラリリファレンスが@rpathを使用していることを確認できます。これは// anaconda/bin/python(//anaconda/bin/python2.7へのリンクかもしれません) 。

幸いにも、これは最近、condora用のPyInstallerのフォークで処理されました。特定のパッチは、私はこのフォークのバージョンを使用していた何https://github.com/conda-forge/pyinstaller-feedstock/pull/2

である私は、PIPを経由して私のconda環境でダウンロードした後、私のconda環境でpyInstallerのこのフォークを使用するhttps://github.com/conda-forge/pyinstaller-feedstockからの命令を使用していたアンpyInstallerのです。具体的には、これらのコマンド:

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

は、だから私はconda環境のために特別にpyInstallerのこのパッチを適用したバージョンへの切り替えをお勧めします、とあなたはそれが私のために行ったように、あなたが問題を乗り越えることができますかどうかを確認したいです。

関連する問題