2010-05-22 20 views
5

i bulmak: AppEngine'de içindenasıl benim .py bir 'zip' dosyasını almaya

import tweepy 

\ oauth_example \ handlers.py

ama can i asla bir zip dosyasını içe cauz, ben bu doğru olduğunu düşünmüyorum bir tweepy.zip dosyası hariç py 'dosyasını,

't bir tweepy dosya veya tweepy en bulunacak'

ben bu app.py bulmak:

import sys 
sys.path.insert(0, 'tweepy.zip') 

neden?

nasıl bir zip dosyasını almak için

..

sayesinde

güncellenen

a.py:

import sys 
sys.path.insert(0, 'b.zip') 

import b 
print b 

b.zip:

b file 
    |-----__init__.py 
    |-----c.py 

c.py:

cc='ccccc' 

hatadır:

> "D:\Python25\pythonw.exe" "D:\zjm_code\a.py" 
Traceback (most recent call last): 
    File "D:\zjm_code\a.py", line 9, in <module> 
    import b 
ImportError: No module named b 

updated2

şimdi,

hatanın nedeni ok: i b.rar adlandırmak to a.zip

cevap

5

Modülleri ararken zip dosyasının adı geçersizdir - bu, sürüm numaralarını my_b_package.1.2.3.zip gibi dosya adına dahil etmenizi sağlar.

Bir zip dosyasından içe aktarmak için, içindeki tüm paket yapısını çoğaltmanız gerekir. Bu durumda, ve c.py modülleriyle b paketine ihtiyacınız vardır.

yani:

b.zip 
| 
| -- b <dir> 
    | -- __init__.py 
    | -- c.py 
1

Z'yi içe aktarmıyorsunuz ip dosyaları, bunları içlerinde modülleri içe aktarabilmeniz için onları sys.path'a eklersiniz. sys.path bir listedir ve normal liste yöntemleri/işlemleri (ör. .append()) bunun üzerinde çalışır.

+0

ama içlerindeki modülleri alamıyor, neden? – zjm1126

+0

Sıkıştırılmış dosyaları bağımsız olarak içe aktarabilirsiniz. Örneğin '.pyc' uzantılı' __main __. Py' ve kodumun geri kalanını içeren bir sıkıştırılmış dosyam var. Daha sonra kendi kendini çalıştırabilen bir modül olarak kullanabilirim, ancak diğer giriş noktalarını istiyorsanız 'zipimport' kullanarak da içe aktarabilirim. –

İlgili konular