Je reçois
IOError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/python_dateutil-2.2-py2.7.Egg/EGG-INFO/top_level.txt'
quand j'essaye d'importer des pandas. Je ne vois pas pourquoi. Importer des pandas dans la console python3 fonctionne très bien. L'exécution du code est également réalisée avec 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()`
Début de LiteForexHandler.py :
import sqlite3 as lite
from pandas import DataFrame
from DataHandler import DataHandler
import logging as log
from collections import defaultdict
...
Et enfin le 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'
Il s'agit d'un problème connu avec python-dateutil, dans lequel les autorisations ne sont pas définies correctement dans le package pypi: https://bugs.launchpad.net/dateutil/+bug/1243202 . Ce n'est pas un problème avec pip, car pip normalise les autorisations, mais si vous l'installez différemment, vous risquez de rencontrer des problèmes.
La solution facile est de courir
Sudo chmod o+r /usr/local/lib/python2.7/dist-packages/python_dateutil-2.2-py2.7.Egg/EGG-INFO/top_level.txt
et la même commande sur tout autre fichier que vous rencontrez avec ce problème dans le répertoire dist-packages.
J'avais juste des problèmes similaires sur ma machine. Pip ne laissait rien installer parce que rien ne pouvait être écrit dans le répertoire de mon site-packages. Pas amoureux de ça, mais j'ai couru Sudo chown -R $USER /Library/Python/2.7/site-packages/
et Pip n'a plus aucun problème à écrire dans mon répertoire site-packages.
Dans mon cas:
Sudo chmod o+r /usr/local/lib/python2.7/dist-packages/python_dateutil-2.2-py2.7.Egg/EGG-INFO/top_level.txt
En général:
Sudo chmod o+r [XXX]
où XXX est le fichier vers lequel il pointe.