我在EC2上有Ubuntu 10.10服务器.我安装了Python 3.1,现在我想在其上安装NumPy.我该怎么做?我试过easy_install-3.1 numpy但是遇到了这个错误:
RefactoringTool: Refactored /tmp/easy_install-MiUli2/numpy-1.5.1/build/py3k/numpy/core/defchararray.py
RefactoringTool: Files that were modified:
RefactoringTool: /tmp/easy_install-MiUli2/numpy-1.5.1/build/py3k/numpy/compat/py3k.py
RefactoringTool: /tmp/easy_install-MiUli2/numpy-1.5.1/build/py3k/numpy/core/defchararray.py
Running from numpy source directory.Traceback (most recent call last):
File "/usr/local/bin/easy_install-3.1", line 9, in <module>
load_entry_point('distribute==0.6.14', 'console_scripts', 'easy_install-3.1')()
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 1855, in main
with_ei_usage(lambda:
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 1836, in with_ei_usage
return f()
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 1859, in <lambda>
distclass=DistributionWithoutHelpCommands, **kw
File "/usr/lib/python3.1/distutils/core.py", line 149, in setup
dist.run_commands()
File "/usr/lib/python3.1/distutils/dist.py", line 919, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.1/distutils/dist.py", line 938, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 342, in run
self.easy_install(spec, not self.no_deps)
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 582, in easy_install
return self.install_item(spec, dist.location, tmpdir, deps)
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 612, in install_item
dists = self.install_eggs(spec, download, tmpdir)
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 802, in install_eggs
return self.build_and_install(setup_script, setup_base)
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 1079, in build_and_install
self.run_setup(setup_script, setup_base, args)
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/command/easy_install.py", line 1068, in run_setup
run_setup(setup_script, args)
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/sandbox.py", line 30, in run_setup
lambda: exec(compile(open(
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/sandbox.py", line 71, in run
return func()
File "/usr/local/lib/python3.1/dist-packages/distribute-0.6.14-py3.1.egg/setuptools/sandbox.py", line 33, in <lambda>
{'__file__':setup_script, '__name__':'__main__'})
File "setup.py", line 211, in <module>
File "setup.py", line 204, in setup_package
File "/tmp/easy_install-MiUli2/numpy-1.5.1/build/py3k/numpy/distutils/core.py", line 152, in setup
File "setup.py", line 151, in configuration
File "/tmp/easy_install-MiUli2/numpy-1.5.1/build/py3k/numpy/distutils/misc_util.py", line 972, in add_subpackage
File "/tmp/easy_install-MiUli2/numpy-1.5.1/build/py3k/numpy/distutils/misc_util.py", line 941, in get_subpackage
File "/tmp/easy_install-MiUli2/numpy-1.5.1/build/py3k/numpy/distutils/misc_util.py", line 878, in _get_configuration_from_setup_py
File "numpy/setup.py", line 5, in configuration
File "/tmp/easy_install-MiUli2/numpy-1.5.1/build/py3k/numpy/distutils/misc_util.py", line 713, in __init__
ValueError: 'build/py3k/numpy' is not a directory
解决方法:
来自this branch的numpy代码似乎包含一个修复程序.
这是一个片段和相关评论:
643 # XXX Hack to get numpy installable with easy_install.
644 # The problem is easy_install runs it's own setup(), which
645 # sets up distutils.core._setup_distribution. However,
646 # when our setup() runs, that gets overwritten and lost.
647 # We can't use isinstance, as the DistributionWithoutHelpCommands
648 # class is local to a function in setuptools.command.easy_install
649 if dist is not None and \
650 repr(dist).find('DistributionWithoutHelpCommands') != -1:
651 return None
652 return dist
但是,如果您不想这样做,请在解压缩numpy的目录中尝试python3.1 setup.py install.这避免了代码注释中描述的easy_install问题.