Python pip не может найти pyobbc
Использование virtualenv и просто попытка установки pyodbc. Все ресурсы, которые я могу найти, утверждают, что это должно быть предельно просто. После всех базовых установок MySQL и т.д. Просто выполните:
pip install pyodbc
Однако, я вижу очень странную ошибку. У него нет (насколько я могу судить), чтобы делать с отсутствующими библиотеками, и после Googling для такого рода ошибок в течение долгого времени, я не могу найти ничего конструктивного в нем вообще.
(local-dev)[email protected] ~ $ 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
Итак, я попробовал вариант "разрешить-внешний", и это не помогает:
(local-dev)[email protected] ~ $ pip install --allow-external pyodbc
You must give at least one requirement to install (see "pip help install")
Но справочная документация показывает, что я правильно использую этот параметр, например. с выхода pip help install
:
Package Index Options:
...
--allow-external <package> Allow the installation of externally hosted files
Здесь результат в файле журнала PIP:
(local-dev)[email protected] ~ $ 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
Кажется, что если я могу просто использовать параметр --allow-external
, он будет работать, потому что он явно видит общее местоположение для получения pyobbc.
Но я озадачен тем, почему это вообще необходимо, когда практически все ссылки на установку pyobbc не нужно убирать, чтобы включить внешние ссылки. Сегодня я также устанавливаю множество пакетов с небольшим количеством проблем и, конечно же, не сталкиваюсь с этой необходимостью allow-external
в любом другом случае.
Я использую pip версии 1.5 с Python 2.7.3 на Ubuntu 12.04.
Ответы
Ответ 1
Запуск pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc
будет работать, если структура каталогов PyPI верна.
На основе вывода pip.log, когда я изначально разместил этот ответ, я думаю, что структура каталога веб-сайта пакета была нарушена. Вы всегда можете обойти эту проблему, указав URL-адрес пакета, например pip install https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/pyodbc/pyodbc-3.0.7.zip
, ссылки для разных версий описываются здесь.
Ответ 2
Я просто попытался установить pyodbc и ударил по той же стене. Я думаю, что проблема, с которой вы и я сталкиваемся, заключается в том, что --allow-external также использует следующий аргумент. Поэтому вам действительно нужно написать:
sudo pip install --allow-external pyodbc pyodbc
Затем я ударил еще одну ошибку о непроверенных источниках, так что команда, которая действительно работала для меня, была:
sudo pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc
Обратите внимание, что после того, как это было сделано, разрешения на установленные файлы не позволили обычным пользователям получить доступ к pyobbc. Поэтому я вошел в ручную настройку разрешений на все установленные пакеты (казалось проще, чем поиск только файлов, необходимых для pyodbc).
cd /usr/local/lib/python2.7/
chmod -R o=g dist-packages
В соответствии с предложением EMS, я добавил проблему в Track Track. Его можно найти по адресу:
https://github.com/pypa/pip/issues/1893
Ответ 3
FWIW, в окнах ms ничего, кроме установки двоичного (windows install) для меня, было громоздким в гибридной среде windows/cygwin.
Я решил использовать pypyodbc как чистый python и не требовал никаких изменений для моей разработки windows/linux. Его можно рассматривать как практически для замены pyodbc без необходимости компиляции и, конечно же, можно легко установить с помощью pip install pypyodbc
.
Ответ 4
Существует простой способ установки pyobbc на windows в virualenv с помощью easy_install:
- скачать последнюю версию установщика pyodbc для Windows
- активировать ваш virtualenv
-
easy_install pyodbc-3.0.7.win32-py2.7.exe
как используется для pywin32: Как я могу использовать pywin32 с virtualenv без необходимости включать папку сайтов сайтов хост-системы?
Ответ 5
У меня был успех при установке с
sudo pip install --allow-external pyodbc --allow-unverified pyodbc pyodbc
Однако мне также понадобился пакет unixodbc-dev
для того, чтобы pyodbc действительно скомпилировался.
Ответ 6
Оба --allow-unverified
и --allow-external
принимают имя пакета в качестве аргумента.
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
требуется аргумент (имя th внешнего разрешения).
- То же самое относится и к
--allow-unverified
.
- С
pip install --allow-external pyodbc
вы разрешаете внешний вызов pyodbc
-
pip install --allow-external pyodbc pydodbc
- это то, что вам нужно, сначала pyodbc
позволяет внешнему, второму, фактически сказать, какой пакет будет установлен.
Из справки по установке справки:
--allow-external Разрешить установку пакета, даже если он внешне
--allow-notverified Разрешить установку пакета, даже если он размещается в небезопасном и непроверяемом виде.
Итак, ваше использование должно быть
pip install <pkg> --allow-unverified <pkg> --allow-external <pkg>
или немного запутанной:
pip install --allow-unverified <pkg> --allow-external <pkg> <pkg>
НЕ используйте --allow-all-external
, когда вы просто хотите разрешить одно, а не ВСЕ. Он убивает всю цель проверки безопасности.