无法将 itertools.so 添加到 os 中的路径
can't add itertools.so to the path in os
我正在使用 mac os x 10.10.1 和 python2.7。就在最近,我安装了 blend 环境,并尝试通过一个名为 batch2.py 的 python 程序以编程方式创建一些动画 together blender。
如果我执行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'
batch2.py如下所示,一个简单的python程序。
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 基于 python 3.4 的环境,所以我只是将系统 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)) )
有
print(list(zip(numbers, decimals)))
如果您真的必须 imap
无论如何,您可以将 itertools
文档中给出的实现复制粘贴到您自己的脚本中。 (为了版本兼容性做了一些小修改)
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)
我正在使用 mac os x 10.10.1 和 python2.7。就在最近,我安装了 blend 环境,并尝试通过一个名为 batch2.py 的 python 程序以编程方式创建一些动画 together blender。
如果我执行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'
batch2.py如下所示,一个简单的python程序。
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 基于 python 3.4 的环境,所以我只是将系统 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)) )
有
print(list(zip(numbers, decimals)))
如果您真的必须 imap
无论如何,您可以将 itertools
文档中给出的实现复制粘贴到您自己的脚本中。 (为了版本兼容性做了一些小修改)
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)