MemoryError при установке tzwhere

На AWS EC2 я клонировал pytzwhere, используя:

sudo git clone --recursive https://github.com/pegler/pytzwhere.git

Затем я попытался установить его с помощью Python 2.7 и:

sudo python setup.py install

К сожалению, он останавливается со следующей ошибкой:

...
Extracting tzwhere-2.2-py2.7.egg to /usr/local/lib/python2.7/site-packages
Traceback (most recent call last):
  File "setup.py", line 32, in <module>
    'Topic :: Software Development :: Localization',
  File "/usr/lib64/python2.7/distutils/core.py", line 151, in setup
    dist.run_commands()
  File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command
    cmd_obj.run()
  File "/usr/lib/python2.7/dist-packages/setuptools/command/install.py", line 67, in run
    self.do_egg_install()
  File "/usr/lib/python2.7/dist-packages/setuptools/command/install.py", line 117, in do_egg_install
    cmd.run()
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 393, in run
    self.easy_install(spec, not self.no_deps)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 623, in easy_install
    return self.install_item(None, spec, tmpdir, deps, True)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 672, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 820, in install_eggs
    return [self.install_egg(dist_filename, tmpdir)]
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 900, in install_egg
    os.path.dirname(destination)))
  File "/usr/lib64/python2.7/distutils/cmd.py", line 349, in execute
    util.execute(func, args, msg, dry_run=self.dry_run)
  File "/usr/lib64/python2.7/distutils/util.py", line 309, in execute
    func(*args)
  File "/usr/lib/python2.7/dist-packages/setuptools/command/easy_install.py", line 1177, in unpack_and_compile
    unpack_archive(egg_path, destination, pf)
  File "/usr/lib/python2.7/dist-packages/setuptools/archive_util.py", line 50, in unpack_archive
    driver(filename, extract_dir, progress_filter)
  File "/usr/lib/python2.7/dist-packages/setuptools/archive_util.py", line 117, in unpack_zipfile
    data = z.read(info.filename)
  File "/usr/lib64/python2.7/zipfile.py", line 935, in read
    return self.open(name, "r", pwd).read()
  File "/usr/lib64/python2.7/zipfile.py", line 630, in read
    data = self.read1(n)
  File "/usr/lib64/python2.7/zipfile.py", line 684, in read1
    max(n - len_readbuffer, self.MIN_READ_SIZE)
MemoryError

Буду признателен, если подскажете, как решить эту проблему.


person 1man    schedule 01.01.2016    source источник
comment
Попробуйте использовать виртуальную среду и pytzwhere из PyPI. Кроме того, убедитесь, что у вас установлены shapely и libgeos из Ubuntu. Я использовал следующее: virtualenv venv для создания виртуальной среды, source venv/bin/activate для ее активации, sudo apt-get install libgeos-dev libgeos-c1 для установки необходимых библиотек и pip install shapely tzwhere, и это сработало для меня. Есть проблема с установкой некоторых библиотек на ec2 из-за ограничений памяти. См. этот SO Q/A.   -  person Mark Mikofski    schedule 02.01.2016
comment
Проблема, с которой вы сталкиваетесь, заключается в том, что он пытается загрузить setuptools. Это классическая причина, по которой вам не следует использовать sudo для установки пакетов Python в систему Linux. Вместо этого используйте python setup.py install --user или, как я рекомендовал выше, используйте виртуальная среда. Вы можете установить virtualenv с помощью sudo apt-get install python-virtualenv. Если вам нужны системные пакеты, используйте системные пакеты сайта. вариант   -  person Mark Mikofski    schedule 02.01.2016
comment
@Марк Микофски, с Новым годом и спасибо за подробный комментарий. Я на AWS Linux, который, я думаю, является Fedora. Я попробовал sudo yum установить libgeos-dev libgeos-c1. Он возвратил Нет доступного пакета libgeos-dev. Пакет libgeos-c1 недоступен. Ошибка: Ничего не делать.   -  person 1man    schedule 02.01.2016
comment
@Mark Mikofski, также, когда я попробовал python setup.py install --user в своей виртуальной среде, он вернул следующее: запуск установки Проверка поддержки файла .pth в /home/ec2-user/.local/lib/python2.7 /site-packages/ /opt/python/run/venv/bin/python -E -c pass TEST FAILED: /home/ec2-user/.local/lib/python2.7/site-packages/ НЕ поддерживает .pth ошибка файлов: неправильный каталог установки или PYTHONPATH...   -  person 1man    schedule 02.01.2016
comment
Извините, что принял Ubuntu, и вас тоже с Новым годом. Похоже, что сопровождающие Fedora имеют стройную сборку в своей базе данных пакетов. Попробуйте yum install python-shapely, он должен установить libgeos и любые другие зависимости, которые у вас есть.   -  person Mark Mikofski    schedule 02.01.2016
comment
@Mark Mikofski, ... Вы пытаетесь установить пакет в каталог, который не находится в PYTHONPATH и из которого Python не читает файлы .pth. Указанный вами каталог установки (через --install-dir, --prefix или настройку по умолчанию distutils): /home/ec2-user/.local/lib/python2.7/site-packages/ и ваша переменная среды PYTHONPATH в настоящее время содержит: '/opt/python/current/app/:/opt/python/current/app/:/opt/python/current/app/:/opt/python/current/app/:/opt/python/current /приложение/:'   -  person 1man    schedule 02.01.2016
comment
Извините, мои извинения за одновременное введение двух разных решений. Пожалуйста, сделайте то или иное. Либо (A) используйте схему --user вне виртуальной среды, либо (B) установите как обычно внутри виртуальной среды, но не то и другое.   -  person Mark Mikofski    schedule 02.01.2016
comment
@Mark Mikofski, к сожалению, sudo yum install python-shapely в моей виртуальной среде возвращает то же самое: нет доступного пакета python-shapely. Ошибка: Ничего не делать   -  person 1man    schedule 02.01.2016
comment
Давайте продолжим обсуждение в чате.   -  person Mark Mikofski    schedule 02.01.2016
comment
@Марк Микофски, привет, я нашел решение. Проблема заключалась в том, что у AWS EC2 возникла проблема с pip install tzwhere. Всякий раз, когда я пытался установить его, он возвращал сообщение об ошибке памяти. Я полностью удалил его и pytzwhere и снова установил pytzwhere. Теперь он работает отлично. Большое спасибо за ваше время и заботу.   -  person 1man    schedule 02.01.2016