2015-09-10 3 views
0

Я пытаюсь заморозить двоичный файл с помощью PyInstaller, который включает код ZMQ. При тестировании приложения все отлично работает с интерпретатором Python, но окончательный двоичный файл вообще не работает.Pyinstaller замерзает недействительный двоичный файл, когда включает ZMQ

Примечание: Другой код используется здесь для иллюстрации и упрощать ошибку:

try: 
     import zmq 
     zmq.Context() 
    except Exception, e: 
     print str(e) 

    print 'end' 

Python версии 2.7.6, операционная система CentOS 6.7, и я работаю в виртуальной среде, которая включает в себя следующие пакеты:

(Compiler)[[email protected] test]$ pip list 
    backports.ssl-match-hostname (3.4.0.2) 
    certifi (2015.9.6.2) 
    cffi (1.2.1) 
    cryptography (1.0.1) 
    Cython (0.23.1) 
    distribute (0.7.3) 
    enum34 (1.0.4) 
    futures (3.0.3) 
    idna (2.0) 
    ipaddress (1.0.14) 
    Jinja2 (2.8) 
    M2Crypto (0.22.3) 
    MarkupSafe (0.23) 
    msgpack-python (0.4.6) 
    npyscreen (4.10.0) 
    pip (7.1.2) 
    psutil (3.2.1) 
    pyasn1 (0.1.8) 
    pycparser (2.14) 
    pycrypto (2.6.1) 
    PyInstaller (2.1) 
    pyroute2 (0.3.14) 
    python-iptables (0.9.0) 
    pytz (2015.4) 
    PyYAML (3.11) 
    pyzmq (14.7.0) 
    requests (2.7.0) 
    salt (2015.5.5) 
    setuptools (18.0.1) 
    six (1.9.0) 
    tornado (4.2.1) 
    tzlocal (1.2) 
    wheel (0.24.0) 

И этот другой пакет оборотов установлен через YUM инструмент:

[[email protected] test]# rpm -qa | grep -i zmq 
    python-zmq-14.3.1-1.el6.x86_64 
  1. Case ONE: Работает с Python Interpreter.

    (Compiler)[[email protected] test]$ python test.py 
    end 
    
  2. Дело TWO: НЕ работает после PyInstaller.

    (Compiler)[[email protected] test]$ pyinstaller --onefile test.py 
    ... 
    12135 INFO: building EXE from out00-EXE.toc 
    12136 INFO: Appending archive to EXE /test/dist/tes 
    
    (Compiler)[[email protected] test]$ /test/dist/test 
    /tmp/_MEIl3jKVa/zmq/libzmq.so: undefined symbol: crypto_secretbox_open 
    end 
    

Что я пропускаю? Заранее спасибо!

ответ

0

Проблема, по-видимому, устранена понижающей версией pyzmq от 14.X до 13.X (например: 13.1.0 была успешно протестирована).

Я думаю, что pyzmq включает библиотеки pyNacl (libsodium) в 14.X и далее. Тем не менее, я также попытался заморозить с помощью Pyinstaller после установки pyNacl (0.3.0) в своей виртуальной среде, и я получил ту же ошибку.

Кто-нибудь знает, как это сделать с последней версией pyzmq?