Почему пип не может найти pysvn?

Я работаю над проектом, который был написан на Python 2, и я обновляю его до Python 3. До сих пор я только что обнаружил незначительные синтаксические ошибки, которые легко устранить. Я создал новый проект на Python 3, обеспечил его работу и копировал фрагменты кода из старого проекта в новый.

Сейчас у меня проблемы с pysvn. Первоначально я получал эту ошибку:

ImportError: нет модуля с именем 'pysvn'

В этот момент я попытался использовать pip install pysvn, который не работал. Я получил следующее:

pip install pysvn

Сбор pysvn

Не удалось найти версию, удовлетворяющую требованию pysvn (из версий:)

Не найдено подходящего распределения для pysvn

Итак, после небольшого исследования я пошел в pysvn скачать сайт и попытался:

>pip install --index-url http://pysvn.tigris.org/project_downloads.html pysvn, что дало мне эту ошибку:

Сбор pysvn

Репозиторий, расположенный на pysvn.tigris.org, не является надежным или безопасным хостом и игнорируется. Если этот репозиторий доступен через HTTPS, рекомендуется использовать HTTPS вместо этого, иначе вы можете отключить это предупреждение и в любом случае разрешить его с помощью "-trusted-host pysvn.tigris.org".

а также ту же ошибку, что и при попытке >pip install pysvn.

Мой следующий шаг состоял в том, чтобы вручную загрузить файл .exe для нужной мне версии, и я смог успешно установить pysvn. Я проверил каталог сайтов-пакетов, и pysvn действительно там, но pip все еще не может мне ничего сказать:

>pip show pysvn

>

Когда я делаю это для другого установленного модуля, например, selenium, я получаю следующее:

pip show selenium


Метаданные-Версия: 1.1

Название: selenium

Версия: 2.49.2

Резюме: привязки Python для Selenium

Домашняя страница: https://github.com/SeleniumHQ/selenium/

Автор: UNKNOWN

Автор-электронная почта: UNKNOWN

Лицензия: UNKNOWN

Местоположение:...\lib\site-packages

Требуется:

Мне удалось проверить, что установка pysvn прошла успешно, потому что мой проект теперь запускается вместо того, чтобы предоставить мне ImportError.

Итак, почему pip не дает мне информацию для другого модуля в том же каталоге, который был успешно установлен?

Ответ 1

Как оказалось, потому что я не использовал pip install для pysvn, pip не знал, что pysvn существует. Поскольку он не был доступен из PyPI (индекс пакета Python), не было способа, чтобы pip мог его видеть (потому что там, где pip идет первым, чтобы найти пакеты, которые он пытается установить).

Из руководства pip:

pip поддерживает установку из PyPI, управления версиями, локальных проектов и непосредственно из файлов распространения.

Так как я в конечном итоге загрузил pysvn из свой собственный сайт загрузки (который не был одним из указанных выше 4 вариантов) и запускал. exe вручную, pip просто не знает об этом , хотя он в том же каталоге, что и другие пакеты, установленные с помощью pip.

Я полагаю, что я мог бы также получить файлы дистрибутива и использовать pip с ними, но мой обходной способ сделал трюк.

Ответ 2

Мой путь на Linux:

Получить источники из здесь

tar -zxf pysvn-1.9.10.tar.gz
apt-get install subversion libsvn1 libsvn-dev make g++
cd pysvn-1.9.10/Source
python setup.py configure --pycxx-dir=/pysvn-1.9.10/Import/pycxx-7.1.3/
make

Здесь у меня есть ошибки ниже:

Compile: /pysvn-1.9.10/Import/pycxx-7.1.3/Src/cxxsupport.cxx into cxxsupport.o
/pysvn-1.9.10/Import/pycxx-7.1.3/Src/cxxsupport.cxx:42:10: fatal error: Src/Python3/cxxsupport.cxx: No such file or directory
#include "Src/Python3/cxxsupport.cxx"

Compile: /pysvn-1.9.10/Import/pycxx-7.1.3/Src/cxxextensions.c into cxxextensions.o
/pysvn-1.9.10/Import/pycxx-7.1.3/Src/cxxextensions.c:42:10: fatal error: Src/Python3/cxxextensions.c: No such file or directory
#include "Src/Python3/cxxextensions.c"

Необходимо отредактировать эти файлы: vi /pysvn-1.9.10/Import/pycxx-7.1.3/Src/cxxsupport.cxx

change #include "Src/Python3/cxxsupport.cxx" to
#include "Python3/cxxsupport.cxx"

и то же самое во втором файле. Затем снова make:

make clean && make
...
Compile: /code/pysvn-1.9.10/Import/pycxx-7.1.3/Src/cxxextensions.c into cxxextensions.o
Compile: /code/pysvn-1.9.10/Import/pycxx-7.1.3/Src/IndirectPythonInterface.cxx into IndirectPythonInterface.o
Compile: /code/pysvn-1.9.10/Import/pycxx-7.1.3/Src/cxx_exceptions.cxx into cxx_exceptions.o
Link pysvn/_pysvn_3_7.so

Затем просто скопируйте его в пакеты сайта (перейдите в ваш каталог):

mkdir /usr/local/lib/python3.7/site-packages/pysvn
cp /code/pysvn-1.9.10/Sources/pysvn/__init__.py /usr/local/lib/python3.7/site-packages/
cp /code/pysvn-1.9.10/Sources/pysvn/_pysvn*.so /usr/local/lib/python3.7/site-packages/