如何将“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__.py
和c.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的主要内容,如果未能解决你的问题,请参考以下文章