【问题标题】:how to import a 'zip' file to my .py如何将“zip”文件导入我的 .py
【发布时间】:2010-05-22 03:38:55
【问题描述】:

当我使用 http://github.com/joshthecoder/tweepy-examples 时,

我发现:

import tweepy

在 appengine\oauth_example\handlers.py 中

但我找不到 tweepy 文件或 tweepy 的“py”文件,除了 tweepy.zip 文件,

我不认为这是正确的,因为我从不导入 zip 文件,

我在 app.py 中找到了这个:

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

为什么?

如何导入 zip 文件..

谢谢

更新

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'

错误是:

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

更新2

现在好了,

错误的原因是:我将 b.rar 重命名为 b.zip

【问题讨论】:

    标签: python import zip


    【解决方案1】:

    在搜索模块时,zip 文件的名称无关紧要 - 这允许您在文件名中包含版本号,例如 my_b_package.1.2.3.zip

    要从 zip 文件导入,您需要在其中复制完整的包结构。在这种情况下,您需要一个包b,其中包含__init__.pyc.py 模块。

    即:

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

    【讨论】:

    • 这对我在运行 AWS Glue 作业时出现导入错误有很大帮助。消息非常模糊,但调整 zip 结构以匹配此答案是必要的修复。谢谢!
    • 是否可以在不将 zip 文件添加到 sys.path 的情况下从 zip 文件导入?
    【解决方案2】:

    您不导入 zip 文件,而是将它们添加到 sys.path,以便您可以在其中导入模块。 sys.path 是一个列表,因此普通的列表方法/操作(例如.append())都可以在它上面工作。

    【讨论】:

    • 但我无法在其中导入模块,为什么?
    • 您可以独立导入压缩文件。例如,我有一个压缩文件,扩展名为 .pyc,包含 __main__.py 和我的所有其余代码。然后我可以将它用作自包含的可运行模块,但如果我想要其他入口点,也可以使用 zipimport 导入它。
    • 是否可以在不将 zip 文件添加到 sys.path 的情况下从 zip 文件导入?
    猜你喜欢
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2021-10-26
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-11-09
    • 1970-01-01
    相关资源
    最近更新 更多