Utiliser virtualenv et essayer d'installer pyodbc. Toutes les ressources que je peux trouver prétendent que cela devrait être extrêmement simple. Après toutes les installations de base de MySQL, etc., faites simplement:
pip install pyodbc
Cependant, je vois une erreur très étrange. Pour autant que je sache, cela n'a rien à voir avec les bibliothèques manquantes, et après avoir recherché ce type d'erreur pendant longtemps, je ne trouve rien de constructif à ce sujet.
(local-dev)espears@espears-w ~ $ pip install pyodbc
Downloading/unpacking pyodbc
Could not find any downloads that satisfy the requirement pyodbc
Some externally hosted files were ignored (use --allow-external pyodbc to allow).
Cleaning up...
No distributions at all found for pyodbc
Storing debug log for failure in /home/espears/.pip/pip.log
J'ai donc essayé avec l'option "allow-external" et ça n'aide pas:
(local-dev)espears@espears-w ~ $ pip install --allow-external pyodbc
You must give at least one requirement to install (see "pip help install")
Mais la documentation d'aide donne l'impression que j'utilise correctement cette option, par exemple à partir de la sortie de l'exécution pip help install
:
Package Index Options:
...
--allow-external <package> Allow the installation of externally hosted files
Voici le résultat dans le fichier journal PIP:
(local-dev)espears@espears-w ~ $ cat /home/espears/.pip/pip.log
Downloading/unpacking pyodbc
Getting page https://pypi.python.org/simple/pyodbc/
URLs to search for versions for pyodbc:
* https://pypi.python.org/simple/pyodbc/
Analyzing links from page https://pypi.python.org/simple/pyodbc/
Skipping link http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/); not a file
Skipping link http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/); not a file
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Not searching http://code.google.com/p/pyodbc/downloads/list (from https://pypi.python.org/simple/pyodbc/) for files because external urls are disallowed.
Could not find any downloads that satisfy the requirement pyodbc
Some externally hosted files were ignored (use --allow-external pyodbc to allow).
Cleaning up...
Removing temporary dir /home/espears/.virtualenvs/local-dev/build...
No distributions at all found for pyodbc
Exception information:
Traceback (most recent call last):
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/basecommand.py", line 122, in main
status = self.run(options, args)
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/commands/install.py", line 270, in run
requirement_set.prepare_files(Finder, force_root_Egg_info=self.bundle, bundle=self.bundle)
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/req.py", line 1157, in prepare_files
url = Finder.find_requirement(req_to_install, upgrade=self.upgrade)
File "/home/espears/.virtualenvs/local-dev/local/lib/python2.7/site-packages/pip/index.py", line 285, in find_requirement
raise DistributionNotFound('No distributions at all found for %s' % req)
DistributionNotFound: No distributions at all found for pyodbc
Il semble que si je peux simplement obtenir le --allow-external
option pour fonctionner, cela fonctionnera car il voit clairement l'emplacement commun pour obtenir pyodbc.
Mais je suis perplexe quant à la raison pour laquelle cela est nécessaire, alors que pratiquement toutes les références à l'installation de pyodbc n'ont pas besoin d'être mises de côté pour activer les liens externes. J'ai également installé de nombreux packages toute la journée aujourd'hui, avec peu de problèmes et ne rencontrant certainement pas ce allow-external
besoin dans tous les autres cas.
J'utilise pip version 1.5 avec Python 2.7.3 sur Ubuntu 12.04.
Fonctionnement pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc
fonctionnera si la structure du répertoire PyPI est correcte.
Sur la base de la sortie pip.log lorsque j'ai initialement publié cette réponse, je pense que la structure de répertoire du site Web du package a été rompue. Vous pouvez toujours contourner ce type de problème en spécifiant l'URL du package comme pip install https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pyodbc/pyodbc-3.0.7.Zip
, les liens pour les différentes versions sont décrits ici .
J'ai également essayé d'installer pyodbc et j'ai heurté le même mur. Je pense que le problème que vous et moi avons touché est que --allow-external consomme également l'argument suivant. Vous devez donc réellement écrire:
Sudo pip install --allow-external pyodbc pyodbc
J'ai ensuite rencontré une autre erreur concernant les sources non vérifiées, de sorte que la commande qui a réellement fonctionné pour moi était:
Sudo pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc
Notez qu'une fois cela fait, les autorisations sur les fichiers installés ont empêché les utilisateurs normaux d'accéder à pyodbc. J'ai donc modifié manuellement les autorisations sur tous les packages installés (cela semblait plus facile que de trouver uniquement les fichiers nécessaires à pyodbc).
cd /usr/local/lib/python2.7/
chmod -R o=g dist-packages
Selon la suggestion de EMS j'ai ajouté un problème au tracker de bogue Pip. Il peut être trouvé à:
FWIW, sur ms windows autre chose que l'installation du binaire (installation de windows) pour moi était encombrant dans un environnement hybride windows/cygwin.
J'ai choisi d'utiliser pypyodbc car c'est pur python et je n'ai pas eu besoin de changements pour mon développement windows/linux. Il peut être vu comme un presque drop-in remplacement de pyodbc sans compilation nécessaire, et bien sûr peut être installé facilement avec pip install pypyodbc
.
Il existe un moyen "plus simple" d'installer pyodbc sur Windows dans un virualenv en utilisant easy_install :
easy_install pyodbc-3.0.7.win32-py2.7.exe
comme utilisé pour pywin32 voir: Comment puis-je utiliser pywin32 avec un virtualenv sans avoir à inclure le dossier des packages de site de l'environnement hôte?
J'ai eu du succès lors de l'installation avec
Sudo pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc
Cependant, j'avais également besoin du unixodbc-dev
package pour que pyodbc se compile réellement.
Tous les deux --allow-unverified
et --allow-external
prend le nom du package comme argument.
From pip help install:
--allow-external <package> Allow the installation of a package even if it
is externally hosted
--allow-unverified <package> Allow the installation of a package even if it
is hosted in an insecure and unverifiable way
--allow-external
nécessite un argument (nom du externe à autoriser).--allow-unverified
aussi .pip install --allow-external pyodbc
, vous autorisez l'externe appelé pyodbc
pip install --allow-external pyodbc pydodbc
est ce dont vous avez besoin, d'abord pyodbc
permet à cet externe, le second indique à pip quel paquet installer.
A partir de pip help install: --allow-external Autorise l'installation d'un package même s'il est hébergé en externe --allow-unverified Autorise l'installation d'un package même s'il est hébergé de manière non sécurisée et invérifiable
Votre utilisation doit donc être
pip install <pkg> --allow-unverified <pkg> --allow-external <pkg>
ou le peu déroutant:
pip install --allow-unverified <pkg> --allow-external <pkg> <pkg>
NE PAS utiliser --allow-all-external
quand vous voulez juste en autoriser une et non [~ # ~] tout [~ # ~] . Cela tue tout le but de faire le contrôle de sécurité.