2015-06-12 17 views
10

Sınırlı alana sahip küçük bir yerleşik Linux aygıtında, sıkıştırmak için büyük [10 Mb] Amazon (AWS) BotoCore kitaplığını (https://github.com/boto/botocore) sıkıştırıp sıkıştırmaya çalışıyorum. PEP273'te (https://www.python.org/dev/peps/pep-0273/) açıklandığı gibi zipimport kullanarak benim Python Scripts.Python PEP 273 ve Amazon BotoCore

## Use zip imports 
import sys 
sys.path.insert(0, '/usr/lib/python2.7/site-packages/site-packages.zip') 

site paketleri dosya sadece o botocore etti ve site paketleri dizinin kendisi kullandığım diğer modüller vardır, ama hariç zip:

Başta da aşağıdaki satırları için benim komut dosyası değiştirilmiş Botocore, içinde. İşte

bu dizinin bir listesidir:

/usr/lib/python2.7/site-packages >> ls -rlt 
    total 1940 
-rw-rw-r-- 1 root root 32984 Jun 8 12:22 six.pyc 
-rw-r--r-- 1 root root  119 Jun 11 07:43 README 
drwxrwxr-x 2 root root 4096 Jun 11 07:43 requests-2.4.3-py2.7.egg-info 
drwxrwxr-x 2 root root 4096 Jun 11 07:43 six-1.9.0-py2.7.egg-info 
drwxrwxr-x 2 root root 4096 Jun 11 07:43 python_dateutil-2.4.2-py2.7.egg-info 
drwxrwxr-x 2 root root 4096 Jun 11 07:43 jmespath-0.7.0-py2.7.egg-info 
-rw-rw-r-- 1 root root 2051 Jun 11 07:44 pygtk.pyc 
-rw-rw-r-- 1 root root 1755 Jun 11 07:44 pygtk.pyo 
-rw-rw-r-- 1 root root  8 Jun 11 07:44 pygtk.pth 
drwxrwxr-x 2 root root 4096 Jun 11 07:44 futures-2.2.0-py2.7.egg-info 
drwxrwxr-x 3 root root 4096 Jun 11 07:44 gtk-2.0 
drwxrwxr-x 3 root root 4096 Jun 11 07:44 requests 
drwxrwxr-x 3 root root 4096 Jun 11 07:44 dbus 
drwxrwxr-x 3 root root 4096 Jun 11 07:44 dateutil 
drwxrwxr-x 2 root root 4096 Jun 11 07:44 jmespath 
drwxrwxr-x 3 root root 4096 Jun 11 07:44 concurrent 
drwxrwxr-x 2 root root 4096 Jun 11 07:44 futures 
drwxrwxr-x 2 root root 4096 Jun 12 10:42 gobject 
drwxrwxr-x 2 root root 4096 Jun 12 10:42 glib 
-rwxr-xr-x 1 root root 5800 Jun 12 10:42 _dbus_glib_bindings.so 
-rwxr-xr-x 1 root root 77680 Jun 12 10:42 _dbus_bindings.so 
-rwxr-xr-x 1 root root 1788623 Jun 12 11:39 site-packages.zip 

Ve işte o zipfile içeriği şunlardır: enter image description here

Benim sorunum sadece bulmak boto3 ve ithalat botocore içe, ama ne zaman olabilir yani Ben burada yer alan bazı API yöntemini kullanmayı deneyin, böyle istisnalar olsun:

>> Unknown component: enpoint_resolver 

veya

>> Unable to load data for: aws/_endpoints! 

Site paketleri dizinini açtıktan sonra zip dosyasını kaldırırsam ve yeniden başlatırsam, komut dosyası çalışır.

Bu büyük kitaplığı sıkıştırmak için zip dosyası ithalatından nasıl yararlanabilirim? Teşekkürler!

+1

Tüm teklifinizi sunan Omg! : O – Zizouz212

+2

Bir cevap istediğinizde ne var? – PhilBot

+1

Sanırım ... ama yine de! – Zizouz212

cevap

7

Maalesef, bu sadece işe yaramayacak.

PEP 273, kütüphane yazarlarının bu paketin uygulanmadığı belirli kuralları takip etmesini gerektirir. Özellikle, pkgutil.get_data() veya eşdeğer bir API yerine makes use of __file__. Sonuç olarak, dosyalar dosya sisteminde mevcut olmalıdır.

Dosya sistemindeki .zip dosyasını yerleştirmek için FUSE kullanmayı deneyebilirsiniz, bu nedenle Python'un sıkıştırılmamış gibi görünmesi, aslında tüm bu disk alanını kaplamaksızın görünür. Sadece Google’a baktığımda, uygun olabileceğine benzeyen fuse-zip ile geldim. Sisteminizde iyi performans gösterdiğinden emin olmak için bazı ölçütleri çalıştırmak isteyeceksiniz.