gpt4 book ai didi

python - 带包的 Zipimport

转载 作者:太空狗 更新时间:2023-10-30 01:30:02 25 4
gpt4 key购买 nike

我正在尝试打包 pychess打包成一个 zip 文件并使用 zipimport 导入它,但遇到了一些问题。

我已经使用以下脚本将它打包成一个 zip 文件,该脚本有效:

#!/usr/bin/env python
import zipfile
zf = zipfile.PyZipFile('../pychess.zip.mod', mode='w')
try:
zf.writepy('.')
finally:
zf.close()
for name in zf.namelist():
print name

但是,我无法在我的代码中进行复杂的导入:

z = zipimport.zipimporter('./pychess.zip.mod')
#z.load_module('pychess') # zipimport.ZipImportError: can't find module 'pychess'
#z.load_module('Utils.lutils') # zipimport.ZipImportError: can't find module 'Utils.lutils'
Utils = z.load_module('Utils') # seems to work, but...
from Utils import lutils
#from Utils.lutils import LBoard # ImportError: No module named pychess.Utils.const


如何导入,例如pychess.Utils.lutils.LBoard 来自 zip 文件?

这是我需要导入的模块的完整列表:

import pychess
from pychess.Utils.lutils import LBoard
from pychess.Utils.const import *
from pychess.Utils.lutils import lmovegen
from pychess.Utils.lutils import lmove

谢谢!

最佳答案

假设你有一个解压的 pychess,导致在你的当前目录中有一个 pychess-0.10.1 目录并且 pychess-0.10.1/lib/pychess 存在(我从解压 pychess-0.10.1.tar 得到了那个目录。 gz).

第一次运行:

#!/usr/bin/env python

import os
import zipfile

os.chdir('pychess-0.10.1/lib')
zf = zipfile.PyZipFile('../../pychess.zip', mode='w')
try:
zf.writepy('pychess')
finally:
zf.close()
for name in zf.namelist():
print name

之后,这有效:

#!/usr/bin/env python

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

from pychess.Utils.lutils import LBoard

关于python - 带包的 Zipimport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10594448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com