Работает ли pysvn с Python 3.2 в Ubuntu 11.04?

У меня есть модуль pysvn, отлично работающий в Python 2.7.1, но он отказывается импортировать в Python 3.2. Он был установлен с помощью apt-get, поэтому я решил, что он должен работать для обоих.

xxxxx:~$ python
Python 2.7.1+ (r271:86832, Sep 27 2012, 21:12:17)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pysvn
>>> exit()

xxxxx:~$ python3
Python 3.2 (r32:88445, Oct 20 2012, 14:09:29)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pysvn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pysvn
>>> exit()

редактировать: я пытался установить версию 3.2 через pip, вот результаты

xxxxx:~$ sudo pip-3.2 install http://pysvn.barrys-emacs.org/source_kits/pysvn-1.7.8.tar.gz  Downloading/unpacking http://pysvn.barrys-emacs.org/source_kits/pysvn-1.7.8.tar.gz
  Downloading pysvn-1.7.8.tar.gz (347kB): 347kB downloaded
  Running setup.py egg_info for package from http://pysvn.barrys-emacs.org/source_kits/pysvn-1.7.8.tar.gz

Cleaning up...
xxxxx:~$ python3
Python 3.2 (r32:88445, Oct 20 2012, 14:09:29)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pysvn
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named pysvn

2 ответа

python3-svn был включен в дистрибутив Ubuntu только с 16.10 Yakkety. Для тех, кто имеет более старые версии Ubuntu, может помочь информация ниже.

Вот как я собрал и установил pysvn для Python3 в 32-битной Ubuntu 14.04 (и позже в 64-битной Ubuntu 16.04):

  1. Уже были Subversion и Python3.
  2. Установил libsvn-dev: sudo apt-get install libsvn-dev, Это также установит libapr1-dev.
  3. Скачал pysvn-1.9.3.tar.gz с сайта Tigris и распаковал его во временный каталог. Последние tar-шары от Tigris уже содержат источники pycxx.
  4. Поменял строки '../Import/pycxx-%d.%d.%d' % pycxx_version, в '../Import/pycxx-6.2.8', в распакованном файле setup_configure.py, чтобы он указывал на распакованный каталог pycxx. Параметр --pycxx-dir, похоже, не работает, поэтому грубое жесткое кодирование.
  5. Бежать

    python3 setup.py configure \ --svn-lib-dir=/usr/lib/i386-linux-gnu/ \ --apr-lib-dir=/usr/lib/i386-linux-gnu/ \ --verbose

    Два дополнительных параметра dir указывают на каталог, в котором находятся libsvn_client-1.so и libapr-1.so. На 64-битной системе это будет /usr/lib/x86_64-linux-gnu/,

  6. Бежать make на самом деле построить библиотеку.
  7. Запустите юнит-тесты: cd ../Tests, make,
  8. Установлена ​​встроенная библиотека:

    cd ../Source sudo mkdir /usr/lib/python3/dist-packages/pysvn sudo cp pysvn/__init__.py /usr/lib/python3/dist-packages/pysvn/ sudo cp pysvn/*.so /usr/lib/python3/dist-packages/pysvn/

  9. Готово.

Это в основном то, что описано в файле INSTALL.html из источников pysvn, с некоторыми изменениями.

Невозможно добавить комментарий, чтобы оставить ссылку, поэтому поместите его здесь:

Мой путь в 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/

Ubuntu распространяет пакеты для Python 2 и Python 3 по отдельности, так как для двух основных версий Python должен использоваться другой исходный код. Как правило, пакет Python 3 имеет префикс python3 вместо python, Похоже, что в Ubuntu нет пакета pysvn для Python 3, хотя pysvn поддерживает Python 3.

Другие вопросы по тегам