2010-05-22 6 views
5

cuando uso http://github.com/joshthecoder/tweepy-examples,cómo importar un archivo 'zip' a mi .py

me parece:

import tweepy 

en el appengine \ oauth_example \ handlers.py

pero puedo 't encontrar un archivo o tweepy de tweepy 'py archivo', excepto un archivo tweepy.zip,

no creo que esto es correcto, cauz Nunca importar un archivo zip,

i encontrar esto en app.py:

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

por qué?

cómo importar un archivo zip ..

gracias

actualizado

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' 

el error es:

> "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

está bien ahora,

la razón del error es: puedo cambiar el nombre b.rar a b.zip

Respuesta

5

El nombre del archivo zip es irrelevante al buscar módulos: esto le permite incluir números de versión en el nombre del archivo, como my_b_package.1.2.3.zip.

Para importar desde un archivo zip, debe replicar la estructura del paquete completo dentro de él. En este caso, necesita un paquete b, con los módulos __init__.py y c.py.

es decir:

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

No importa z archivos ip, los agrega al sys.path para que pueda importar módulos dentro de ellos. sys.path es una lista, y como tal, los métodos/operaciones de lista normal (por ejemplo, .append()) funcionan todos en ella.

+0

, pero no puedo importar módulos dentro de ellos, ¿por qué? – zjm1126

+0

Puede importar archivos comprimidos de forma independiente. Por ejemplo, tengo un archivo comprimido, con extensión '.pyc', que contiene' __main __. Py' y todo el resto de mi código. Entonces puedo usarlo como un módulo ejecutable autónomo, pero también lo puedo importar usando 'zipimport' si quiero otros puntos de entrada. –

Cuestiones relacionadas