Получаване на IOError: [Errno 13] Отказано разрешение:.. при импортиране на pandas.DataFrame

получавам

IOError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/python_dateutil-2.2-py2.7.egg/EGG-INFO/top_level.txt'

когато се опитвам да импортирам панди. Не виждам защо. Импортирането на панди в конзолата на python3 работи добре. Изпълнението на кода също се извършва с Python3

start_simulation.py

from Market import Market
from TestingAlgorithm import TestingAlgorithm
from LiteForexHandler import LiteForexHandler
from Broker import Broker
from Portfolio import Portfolio

market = Market('./simulations/', 'test', TestingAlgortihm, LiteForexHandler,
    Broker, Portfolio)
market.run()`

Начало на LiteForexHandler.py:

import sqlite3 as lite
from pandas import DataFrame
from DataHandler import DataHandler
import logging as log
from collections import defaultdict
...

И накрая Traceback

Traceback (most recent call last):
  File "start_simulation.py", line 3, in <module>
    from LiteForexHandler import LiteForexHandler
  File "/home/ioan/Dokumente/finance/stocker/LiteForexHandler.py", line 2, in <module>
    from pandas import DataFrame
  File "/usr/local/lib/python2.7/dist-packages/pandas-0.13.1_501_g4c3b9e5-py2.7-linux-x86_64.egg/pandas/__init__.py", line 38, in <module>
    import pandas.core.config_init
  File "/usr/local/lib/python2.7/dist-packages/pandas-0.13.1_501_g4c3b9e5-py2.7-linux-x86_64.egg/pandas/core/config_init.py", line 17, in <module>
    from pandas.core.format import detect_console_encoding
  File "/usr/local/lib/python2.7/dist-packages/pandas-0.13.1_501_g4c3b9e5-py2.7-linux-x86_64.egg/pandas/core/format.py", line 9, in <module>
    from pandas.core.index import Index, MultiIndex, _ensure_index
  File "/usr/local/lib/python2.7/dist-packages/pandas-0.13.1_501_g4c3b9e5-py2.7-linux-x86_64.egg/pandas/core/index.py", line 11, in <module>
    import pandas.index as _index
  File "index.pyx", line 34, in init pandas.index (pandas/index.c:15559)
  File "/usr/local/lib/python2.7/dist-packages/pytz-2014.2-py2.7.egg/pytz/__init__.py", line 29, in <module>
    from pkg_resources import resource_stream
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2823, in <module>
    add_activation_listener(lambda dist: dist.activate())
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 710, in subscribe
    callback(dist)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2823, in <lambda>
    add_activation_listener(lambda dist: dist.activate())
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2255, in activate
    self.insert_on(path)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2362, in insert_on
    self.check_version_conflict()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2401, in check_version_conflict
    for modname in self._get_metadata('top_level.txt'):
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2249, in _get_metadata
    for line in self.get_metadata_lines(name):
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1219, in get_metadata_lines
    return yield_lines(self.get_metadata(name))
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1211, in get_metadata
    return self._get(self._fn(self.egg_info,name))
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 1326, in _get
    stream = open(path, 'rb')
IOError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/python_dateutil-2.2-py2.7.egg/EGG-INFO/top_level.txt'

person kave    schedule 29.03.2014    source източник
comment
Едно нещо, което можете да опитате е да инсталирате всеки пакет във virtualenv. По някаква причина един модул се опитва да получи достъп до файл в /usr/local/lib, което не може да направи, защото не сте изпълнили скрипта като суперпотребител.   -  person elbear    schedule 29.03.2014
comment
Препоръчвам анаконда за инсталиране на панди, които можете да инсталирате без sudo.   -  person Andy Hayden    schedule 30.03.2014
comment
Инсталирах pandas от хранилището на ubuntu в пакета python3-pandas...не трябва ли това да е най-добрият начин?   -  person kave    schedule 30.03.2014
comment
Със сигурност можете да получите достъп за четене до /usr/local/lib без sudo. Нещо се обърка в начина, по който сте инсталирали тези пакети. Virtualenv е ваш приятел в тази ситуация и инсталирайте всички необходими пакети чрез pip. Нещата могат да станат непоследователни, като се използва apt-get за различни пакети на python и/или смесване с pip. Освен това скоро се надяваме, че всички пакети на pypi ще използват python wheels, което ще направи инсталацията също толкова бърза, колкото и предварително изградените двоични файлове в apt-get   -  person qwwqwwq    schedule 30.03.2014
comment
ще ви осигури стара версия на pandas, определено не е препоръчителният начин.   -  person Andy Hayden    schedule 30.03.2014


Отговори (3)


Това е известен проблем с python-dateutil, при който разрешенията не са зададени правилно в пакета pypi: https://bugs.launchpad.net/dateutil/+bug/1243202. Това не е проблем с pip, защото pip нормализира разрешенията, но ако го инсталирате по различен начин, може да срещнете проблеми.

Лесното решение е да бягате

sudo chmod o+r /usr/local/lib/python2.7/dist-packages/python_dateutil-2.2-py2.7.egg/EGG-INFO/top_level.txt

и същата команда за всеки друг файл, който срещнете с този проблем в директорията dist-packages.

person szxk    schedule 09.07.2014
comment
superuser .com/questions/106181/ - person szxk; 24.03.2016
comment
Благодаря за това szxk. Попаднах на грешка 13 за цял куп пакети, така че промених командата на: sudo chmod -R o+r /Library/Python/2.7/site-packages, за да получа всички наведнъж. Не мислех, че има нещо странно с инсталацията: просто pip инсталация xyz и пак не я хареса. - person Pete855217; 22.08.2016

Просто имах подобни проблеми на моята машина. Pip не ми позволяваше да инсталирам нищо, защото нищо не можеше да бъде записано в моята директория с пакети за сайтове. Не съм влюбен в това, но стартирах sudo chown -R $USER /Library/Python/2.7/site-packages/ и сега Pip няма проблем да пише в моята директория с пакети за сайтове.

person Stephen Tetreault    schedule 28.09.2016
comment
Вероятно трябваше да извикате sudo pip install, за да може pip да пише в споделени директории, или pip install --user, за да не се опитва да пише в споделена директория. - person Roland Weber; 26.10.2016

В моя случай:

sudo chmod o+r /usr/local/lib/python2.7/dist-packages/python_dateutil-2.2-py2.7.egg/EGG-INFO/top_level.txt

Общо взето:

sudo chmod o+r [XXX]

където XXX е файлът, към който сочи.

person user1854182    schedule 18.04.2017