为什么pip找不到pysvn?

Why can't pip find pysvn?

我正在开发一个用 Python 2 编写的项目,我正在将其升级到 Python 3。到目前为止,我只是发现了一些小的语法错误很容易修复。我所做的是在 Python 3 中创建了一个新项目,确保它可以正常工作,并将旧项目中的代码块复制到新项目中。

现在,我在使用 pysvn 时遇到了问题。最初,我收到此错误:

ImportError: No module named 'pysvn'

此时,我尝试使用 pip install pysvn,但没有用。我得到以下信息:

pip install pysvn

Collecting pysvn

Could not find a version that satisfies the requirement pysvn (from versions:)

No matching distribution found for pysvn

然后经过一些研究,我去了 pysvn download site 并尝试了:

>pip install --index-url http://pysvn.tigris.org/project_downloads.html pysvn,这给了我这个错误:

Collecting pysvn

The repository located at pysvn.tigris.org is not a trusted or secure host and is being ignored. If this repository is available via HTTPS it is recommended to use HTTPS instead, otherwise you may silence this warning and allow it anyways with '--trusted-host pysvn.tigris.org'.

和我尝试 >pip install pysvn.

时一样的错误

我的下一步是手动下载我需要的版本的 .exe 文件,我能够成功安装 pysvn。我检查了 site-packages 目录,pysvn 确实存在 ,但是 pip 仍然不能告诉我任何关于它的信息:

>pip show pysvn

>

当我对另一个已安装的模块(例如 selenium)执行此操作时,我得到以下信息:

pip show selenium


Metadata-Version: 1.1

Name: selenium

Version: 2.49.2

Summary: Python bindings for Selenium

Home-page: https://github.com/SeleniumHQ/selenium/

Author: UNKNOWN

Author-email: UNKNOWN

License: UNKNOWN

Location: ...\lib\site-packages

Requires:

我能够验证 pysvn 安装是否成功,因为我的项目现在运行而不是给我 ImportError。

那么为什么 pip 不能给我 已成功安装 的同一目录中的另一个模块的信息?

事实证明,因为我没有对pysvn使用pip install,所以pip并不知道pysvn的存在。因为它在 PyPI (the Python Package Index) 中不可用,所以 pip 无法看到它(因为这是 pip 首先找到它试图安装的包的地方)。

来自pip user guide

pip supports installing from PyPI, version control, local projects, and directly from distribution files.

由于我最终从 its own download site 下载了 pysvn(这不是上述 4 个选项中的任何一个)并且 运行 手动下载了 .exe,pip 根本就没有我不知道它 即使它与 pip 安装的其他软件包位于同一目录中

我想我也可以检索分发文件并将 pip 与这些文件一起使用,但我的解决方法起到了作用。

我的方式 linux:

here

获取资源
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

sudo apt install python-svn 

Python 3

sudo apt install python3-svn