如何将“zip”文件导入我的 .py

Posted

技术标签:

【中文标题】如何将“zip”文件导入我的 .py【英文标题】:how to import a 'zip' file to my .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

【问题讨论】:

【参考方案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 文件导入?

以上是关于如何将“zip”文件导入我的 .py的主要内容,如果未能解决你的问题,请参考以下文章

将 .py 文件的整个文件夹导入 google colab

如何将 zip 文件导入 Visual Studio 代码

即时将 csv 文件添加到 zip 文件以进行导出和导入

如何向IPython Notebook中导入.py文件

无法导入 xlrd 模块

如何将.zip数据导入neo4j?