在amazon ec2 linux微型实例上安装scipy在virtualenv上遇到麻烦

我已经在amazon ec2微型实例(Ubuntu 13.04)上的默认python编译器中成功安装了scipy 。 但是我不能在scipy中安装scipy

pip install scipy以这个错误结束

 scipy/sparse/sparsetools/csr_wrap.cxx: In function 'void init_csr()': scipy/sparse/sparsetools/csr_wrap.cxx:73303:21: warning: variable 'md' set but not used [-Wunused-but-set-variable] c++: internal compiler error: Killed (program cc1plus) Please submit a full bug report, with preprocessed source if appropriate. See <file:///usr/share/doc/gcc-4.7/README.Bugs> for instructions. ---------------------------------------- Cleaning up... Command /home/ubuntu/pnr/bin/python -c "import setuptools;__file__='/home/ubuntu/pnr/build/scipy/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-t8Drvd-record/install-record.txt --single-version-externally-managed --install-headers /home/ubuntu/pnr/include/site/python2.7 failed with error code -9 in /home/ubuntu/pnr/build/scipy 

 Traceback (most recent call last): File "/home/ubuntu/pnr/bin/pip", line 9, in <module> load_entry_point('pip==1.4.1', 'console_scripts', 'pip')() File "/home/ubuntu/pnr/local/lib/python2.7/site-packages/pip/__init__.py", line 148, in main return command.main(args[1:], options) File "/home/ubuntu/pnr/local/lib/python2.7/site-packages/pip/basecommand.py", line 169, in main text = '\n'.join(complete_log) UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 53: ordinal not in range(128) 

之前有人问。 pip freeze默认编译器返回

 Cheetah==2.4.4 Landscape-Client==12.12 M2Crypto==0.21.1 PAM==0.4.2 Pillow==2.0.0 PyYAML==3.10 Twisted-Core==12.3.0 Twisted-Names==12.3.0 Twisted-Web==12.3.0 apt-xapian-index==0.45 argparse==1.2.1 boto==2.3.0 chardet==2.0.1 cloud-init==0.7.2 configobj==4.7.2 distribute==0.6.34 distro-info==0.10 euca2ools==2.1.1 numpy==1.7.1 oauth==1.0.1 paramiko==1.7.7.1 prettytable==0.6.1 pyOpenSSL==0.13 pycrypto==2.6 pycurl==7.19.0 pygobject==3.8.0 pyserial==2.6 python-apt==0.8.8ubuntu6 python-debian==0.1.21-nmu2ubuntu1 requests==1.1.0 scipy==0.11.0 six==1.2.0 ssh-import-id==3.14 urllib3==1.5 virtualenv==1.10.1 wsgiref==0.1.2 zope.interface==4.0.5 

用于virtualenv的pip freeze命令返回

 Cython==0.19.2 Flask==0.10.1 Flask-Bootstrap==3.0.0.1 Flask-WTF==0.9.3 Jinja2==2.7.1 MarkupSafe==0.18 WTForms==1.0.5 Werkzeug==0.9.4 argparse==1.2.1 beautifulsoup4==4.3.2 itsdangerous==0.23 numpy==1.7.1 pymongo==2.6.2 requests==2.0.0 wsgiref==0.1.2 

一种解决scheme是暂时在您的微型实例上启用交换。 正如在SOpost中所述 ,通过以下方式启用1GB交换:

 sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 sudo /sbin/mkswap /var/swap.1 sudo /sbin/swapon /var/swap.1 

一旦交换,通过点安装scipy:

 sudo apt-get install -y libatlas-base-dev gfortran python-dev build-essential g++ sudo pip install numpy sudo pip install scipy 

一旦scipy成功安装,您可以通过以下方式禁用它:

 sudo swapoff /var/swap.1 sudo rm /var/swap.1 

这对我工作:

 pip --no-cache-dir install scipy 

看到:

注意:

  • 适用于其他服务提供商,硬件,虚拟机和容器。
  • 如果RAM分配大小为1GB的话
  • 只需计算caching目录内存使用情况和可用内存之间的差异即可

是的,512MB不足以编译该C ++文件。

你最好的select是将Scipy作为一个二进制包(bdist,或鸡蛋 ,或更现代的车轮 ),例如通过python setupegg.py bdist_egg在具有兼容环境的不同机器上python setupegg.py bdist_egg 。 例如,在虚拟机中使用与EC2实例类似的Linux版本。

一般来说,记住当pip安装软件包时,它会编译源文件。 如果软件包不是很小,那么效率不高,最好使用二进制软件包。 wheel包格式应该与pip一起玩。

对我来说,错误是稍有不同。

 Blas (http://www.netlib.org/blas/) libraries not found. Directories to search for the libraries can be specified in the numpy/distutils/site.cfg file (section [blas]) or by setting the BLAS environment variable. ---------------------------------------- Cleaning up... Command /home/kdixit/pyvirt/bin/python -c "import setuptools;__file__='/home/kdixit/pyvirt/build/scipy/setup.py';exec(compile(open(__file__).read().replace('\r\n 

所以我不得不安装

 sudo apt-get install libblas-dev 

然后它工作。

我在scipy编译期间出现了虚拟内存错误,我认为numpy编译得很好。 无论如何,我想Dolan Antenucci的答案可以解决我的问题,但是我走了另一条路线,一个妥协,这是行得通的。

我正在运行一个Ubuntu实例,所以记住这一点。

 sudo apt-get -y install python-scipy && echo -e "\nok, installed python-scipy, continuing...\n" # add scipy to the venv mkdir ~/venv_PROJECT/lib/python2.7/site-packages/scipy/ ln -s /usr/lib/python2.7/dist-packages/scipy/* ~/venv_PROJECT/lib/python2.7/site-packages/scipy/ # add numpy to the venv mkdir ~/venv_PROJECT/lib/python2.7/site-packages/numpy/ ln -s /usr/lib/python2.7/dist-packages/numpy/* ~/venv_PROJECT/lib/python2.7/site-packages/numpy/ # add PIL to the venv mkdir ~/venv_PROJECT/lib/python2.7/site-packages/PIL/ ln -s /usr/lib/python2.7/dist-packages/PIL/* ~/venv_PROJECT/lib/python2.7/site-packages/PIL/ 

妥协是,你将无法在不同的虚拟环境中使用不同的版本,而且你被绑定到回购版本。

一句警告:

 >>> import scipy >>> scipy.__version__ '0.13.3' >>> import numpy >>> numpy.__version__ '1.8.2' >>> from PIL import Image >>> Image.VERSION '1.1.7'