Подтвердить что ты не робот

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.

4b9b3361

Ответ 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, когда вы просто хотите разрешить одно, а не ВСЕ. Он убивает всю цель проверки безопасности.