Macos can';t将itertools.so添加到操作系统中的路径
我正在使用MacOSX10.10.1和python2.7。就在最近,我安装了blend环境,并尝试通过一个名为batch2.py together blender的python程序以编程方式创建一些动画 如果我在Macos can';t将itertools.so添加到操作系统中的路径,macos,python-2.7,itertools,Macos,Python 2.7,Itertools,我正在使用MacOSX10.10.1和python2.7。就在最近,我安装了blend环境,并尝试通过一个名为batch2.py together blender的python程序以编程方式创建一些动画 如果我在python batch2.py中执行程序,它就可以正常工作,为了制作动画,我必须通过命令来执行它 -/Applications/Blender/Blender.app/Contents/MacOS/Blender-b scene.blend-P batch2.py 但是,会出现一个错误
python batch2.py
中执行程序,它就可以正常工作,为了制作动画,我必须通过命令来执行它
-/Applications/Blender/Blender.app/Contents/MacOS/Blender-b scene.blend-P batch2.py
但是,会出现一个错误,说明:
print ( list(itertools.imap(None, numbers, decimals)) )
AttributeError: 'module' object has no attribute 'imap'
下面是一个简单的python程序batch2.py
import sys
import itertools
print (sys.path)
print (".....................")
letters = ['a', 'b', 'c', 'd', 'e', 'f']
booleans = [1, 0, 1, 0, 0, 1]
numbers = [23, 20, 44, 32, 7, 12]
decimals = [0.1, 0.7, 0.4, 0.4, 0.5]
print ( list(itertools.imap(None, numbers, decimals)) )
由于blender应用程序有自己的基于python 3.4的python环境,因此我只需将system os环境添加到sys.path中,如下所示
sys.path.append("/Users/abc/anaconda/lib/python2.7")
sys.path.append("/Users/abc/anaconda/lib/python2.7/site-packages")
sys.path.append("/Users/abc/anaconda/lib/python2.7/lib-dynload/")
sys.path.append("/Users/abc/anaconda/lib/python2.7/plat-darwin")
sys.path.append("/Users/abc/anaconda/lib/python2.7/plat-mac")
sys.path.append("/Users/abc/anaconda/lib/python2.7/lib-tk")
sys.path.append("/Users/abc/anaconda/lib/python2.7/lib-old")
sys.path.append("/Users/abc/anaconda/lib/python2.7/site-packages/PIL")
sys.path.append("/Users/abc/anaconda/lib/python2.7/site-packages/Sphinx-1.2.3-py2.7.egg")
sys.path.append("/Users/abc/anaconda/lib/python2.7/site-packages/runipy-0.1.1-py2.7.egg")
sys.path.append("/Users/abc/anaconda/lib/python2.7/site-packages/setuptools-5.8-py2.7.egg")
但它仍然不起作用
我发现itertools的路径是“/Users/abc/anaconda/lib/python2.7/lib dynload/itertools.so”,但我如何使用它呢?将Python 2.7文件夹添加到路径中不允许Python 3.X使用2.7模块 无论如何,这里并不需要
imap
,您可以使用内置的zip
功能来组合序列。替换
print ( list(itertools.imap(None, numbers, decimals)) )
与
如果无论如何都必须使用
imap
,则可以将itertools
文档中给出的实现复制粘贴到自己的脚本中。(对版本兼容性进行了少量修改)
将Python2.7文件夹添加到路径将不允许Python3.X使用2.7模块 无论如何,这里并不需要
imap
,您可以使用内置的zip
功能来组合序列。替换
print ( list(itertools.imap(None, numbers, decimals)) )
与
如果无论如何都必须使用
imap
,则可以将itertools
文档中给出的实现复制粘贴到自己的脚本中。(对版本兼容性进行了少量修改)
谢谢,凯文。但是仍然有办法使用itertools.imap(),因为我有一个模块需要使用itertools。@user824624否。在Python 3中没有办法使用Python 2模块。那么有没有办法在blender环境中添加itertools模块您可以只使用内置的
映射
,在3.X中,它多少相当于imap
。请注意,它不再接受None
作为第一个参数。(同样,在这种情况下,您可以使用zip
)没有itertools.map
方法<代码>地图在内置模块中。谢谢,凯文。但是仍然有办法使用itertools.imap(),因为我有一个模块需要使用itertools。@user824624否。在Python 3中没有办法使用Python 2模块。那么有没有办法在blender环境中添加itertools模块您可以只使用内置的映射
,在3.X中,它多少相当于imap
。请注意,它不再接受None
作为第一个参数。(同样,在这种情况下,您可以使用zip
)没有itertools.map
方法<代码>地图位于内置模块中。
def imap(function, *iterables):
# imap(pow, (2,3,10), (5,2,3)) --> 32 9 1000
iterables = list(map(iter, iterables))
while True:
args = [next(it) for it in iterables]
if function is None:
yield tuple(args)
else:
yield function(*args)