2016-09-15 30 views
7

Basit bir 3 sayfalık bir şişe web sitesi PEX dosyası oluşturmaya çalışıyorum. Site python3 üzerinde Gunicorn ile çalışıyor, müşteri sitenin kapsüllenmiş bir pex dosyasına derlenmesini istiyor. O komut gayet derler çalıştırdığınızda Küçük bir şişe web sitesi PEX oluşturma

pex -r zb1/requirements.txt -e zb1/run -o zb1.pex

da

pex -r zb1/requirements.txt -m zb1:run -o zb1.pex

çalıştı ama ben pex dosyasını çalıştırmayı denediğinizde sorun.

c:~ c$ ./zb1.pex 
Traceback (most recent call last): 
    File ".bootstrap/_pex/pex.py", line 326, in execute 
    File ".bootstrap/_pex/pex.py", line 258, in _wrap_coverage 
    File ".bootstrap/_pex/pex.py", line 290, in _wrap_profiling 
    File ".bootstrap/_pex/pex.py", line 369, in _execute 
    File ".bootstrap/_pex/pex.py", line 427, in execute_entry 
    File ".bootstrap/_pex/pex.py", line 432, in execute_module 
    File "/usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Versions/3.5/lib/python3.5/runpy.py", line 192, in run_module 
    mod_name, mod_spec, code = _get_module_details(mod_name) 
    File "/usr/local/Cellar/python3/3.5.2/Frameworks/Python.framework/Versions/3.5/lib/python3.5/runpy.py", line 127, in _get_module_details 
    raise error("No module named %s" % mod_name) 
ImportError: No module named zb1/run 

I pex komutları farklı varyasyonlarını çalıştılar. Bu, MacOSX El Capitan'da python2.7 ve python3.5

ile ilgilidir. Teşekkürler. Teşekkürler.

Proje Yapısı

zb1 
├── README.md 
├── __init__.py 
├── application 
│   ├── config.py 
│   ├── static 
│   ├── templates 
│   ├── uploads 
│   ├── utilities 
│   └── zbo 
├── buildup.py 
├── env 
├── requirements.txt 
├── run.py << ENTRY POINT! 
└── setup.sh 

cevap

0

yalnızca proje için gereksinimleri dahil çalıştıran komutları, bunlar aslında kod eklemek için PEX talimat yoktur. Kodunuzu Pex uygulamasına yerleştirmek için önce paketlemeniz ve ardından Pex'e bu paketi dahil etmesi için talimat vermeniz gerekir.

kodunuzu

1. Paketi (Pex zb1 yüzden yerine mypackage kullanılan isim gibi değildi herhangi bir nedenle)

:

#!/usr/bin/env python 

from setuptools import setup 

setup(
    name='mypackage', 
    packages = ['mypackage'], 
    version='1.0.0') 
:

üst düzeyinde bir setup.py dosyası oluşturun

Kodunuzu, paketinizle aynı ada sahip bir alt dizine taşıyın:

mypackage 
├── mypackage 
│ ├── __init__.py 
│ ├──application 
│ │ ├── config.py 
│ │ ├── static 
│ │ ├── templates 
│ │ ├── uploads 
│ │ ├── utilities 
│ │ └── zbo 
│ ├── buildup.py 
│ └── run.py 
├── env 
├── requirements.txt 
├── setup.py 
└── setup.sh 

Oluştur wheel file:

pex --python=python3 -r requirements.txt -f . mypackage -e mypackage.run -o mypackage.pex 

Not: Bu sizin pakete dahil mypackage-1.0.0-py3-none-any.whl

2. Run Pex adlı tüm kodu içeren bir dosya oluşturur

pip3 wheel -w . . 

yürütülebilir dosyanın paket ve modül arasında bir nokta kullanılarak belirtildiğini.