2

我的 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()

编辑:我也试过通过 pip 安装 3.2 版本,结果如​​下

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
4

3 回答 3

3

自 16.10 Yakkety 起, python3-svn才被包含在 Ubuntu 发行版中。对于那些拥有旧 Ubuntu 版本的人,以下信息可能会有所帮助。

这就是我在 Ubuntu 14.04 32 位(以及后来的 Ubuntu 16.04 64 位)上为 Python3 构建和安装 pysvn 的方式:

  1. 已经有颠覆和python3。
  2. 安装libsvn-dev : sudo apt-get install libsvn-dev。这也将安装 libapr1-dev。
  3. 从 Tigris 网站下载 pysvn-1.9.3.tar.gz 并将其解压缩到临时目录中。来自 Tigris 的最新 tar-balls 已经包含 pycxx 源。
  4. 将解压后的setup_configure.py文件中的行更改为'../Import/pycxx-%d.%d.%d' % pycxx_version,指向解压后的 pycxx 目录。该参数对我不起作用,因此是粗暴的硬编码。不过,它可能适用于您的情况,因此您可能想先尝试一下(请参阅@djangonaut 的评论)。'../Import/pycxx-6.2.8',--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. 完毕。

这主要是 pysvn 源的 INSTALL.html 文件中描述的内容,并进行了一些调整。

于 2017-01-05T12:22:47.130 回答
1

无法添加评论留下链接,所以把它放在这里:

我在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/
于 2019-09-19T13:15:29.620 回答
-1

Ubuntu 分别分发 Python 2 和 Python 3 的包,因为 Python 的两个主要版本必须使用不同的源代码。通常,Python 3 包的前缀是python3而不是python. 尽管 pysvn 支持 Python 3,但 Ubuntu 中似乎不存在 Python 3 pysvn 包。

于 2013-12-06T15:20:15.580 回答