我正在开发一个用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.我已经检查了site-packages目录,并且pysvn 确实存在,但是pip仍然无法告诉我任何有关它的信息:
>pip show pysvn
>
Run Code Online (Sandbox Code Playgroud)
当我为另一个安装的模块,例如selenium执行此操作时,我得到以下内容:
pip show selenium
元数据 - 版本:1.1
名称:硒
版本:2.49.2
简介:Selenium的Python绑定
主页:https://github.com/SeleniumHQ/selenium/
作者:UNKNOWN
作者电子邮件:未知
许可证:未知
位置:...\lib\site-packages
要求:
我能够验证pysvn的安装是否成功,因为我的项目现在运行而不是给我ImportError.
那么为什么pip不能给我成功安装的同一目录中的另一个模块的信息呢?
我在默认位置C:\ Python27中安装了Python 2.7.2.我从http://pysvn.tigris.org/project_downloads.html > Windows安装工具包下载了pysvn 2.7 .Pysvn Windows安装程序中止
pysvn需要安装Python 2.7.
退出安装
我已经尝试了两个安装程序文件py27-pysvn-svn1612-1.7.4-1321.exe和py27-pysvn-svn1615-1.7.5-1360.exe.它们都不起作用.
如何说服安装程序我安装了Python 2.7?安装程序如何确定是否安装了pysvn?
我可以使用二进制包在站点范围内安装pysvn.例如,在Ubuntu中:
$ sudo apt-get install python-svn
Run Code Online (Sandbox Code Playgroud)
或者,在Windows上,我可以使用.exe安装程序在站点范围内安装.
在virtualenv之外,我可以做到这一点
$ python -c "import pysvn; print 'ok'"
ok
Run Code Online (Sandbox Code Playgroud)
现在我制作一个virtualenv(我使用virtualenvwrapper包中的mkvirtualenv命令)
$ mkvirtualenv test1
Run Code Online (Sandbox Code Playgroud)
但由于virtualenv默认不导入全局网站包,我不能在这个virtualenv中使用pysvn.
(test1)$ python -c "import pysvn; print 'ok'"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named pysvn
Run Code Online (Sandbox Code Playgroud)
如何在不启用全局站点包的情况下访问virtualenv中的pysvn?
我正在使用pysvn,我正在尝试找到一种合适的方法来处理只能通过svn + ssh访问的存储库.显然,SSH密钥使这一切变得异常简单,但我无法保证最终用户将使用SSH密钥.这也必须能够在没有用户交互的情况下运行,因为它将进行一些svn日志解析.
最大的问题是,使用svn + ssh会弹出一个交互式提示进行身份验证.显然我希望能够让pysvn自动使用一组给定的凭据登录,但是set_default_username和set_default_password在这方面对我没有任何帮助.如果我不能拥有它,我至少希望能够失败,并记录一条消息告诉用户设置SSH密钥.但是,set_interactive似乎与此无关,我仍然会提示输入client.log('svn + ssh:// path')的密码.
有关如何解决这个问题的任何想法?是否真的有可能在没有SSH密钥的情况下处理这个问题,因为SSH正在抛出提示?
我是Python和PySVN的新手,我正在尝试使用pysvn导出我的SVN存储库.这是我的代码:
#set up svn login data
def svn_credentials (realm, username, may_save):
return True, svn_login_name, svn_login_password, False
#establish connection
svn_client = pysvn.Client ()
svn_client.callback_get_login = svn_credentials
#export data
svn_client.export('server-path-goes-here', 'client-path-goes-here', force=True)
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但如果密码错误或用户名未知,此代码就可以了.我相信它会在SVN端出现用户登录提示,但我不知道如何检查callback_get_login发生了什么.任何帮助将不胜感激.
我正在使用pysvn来监视Subversion目录中的更改.这是我从修订版中获取信息的方式:
(...)
svn_root = "http://svn/"
client = pysvn.Client()
from_revision = pysvn.Revision(pysvn.opt_revision_kind.number, 1500)
to_revision = pysvn.Revision( pysvn.opt_revision_kind.head )
revisions = client.log(svn_root, to_revision, to_revision, discover_changed_paths=True)
Run Code Online (Sandbox Code Playgroud)
现在,我想从一个特定的修订版本什么变化不一样,在我的例子,但在过去5次修订中的变化(从head - 5到head).我怎么能做到这一点?我如何获得头部修订的NUMBER?
我可以通过从Python调用Shell来实现.但我想使用pysvn有一种"Pythonic"方式.
我有以下脚本,我用来从svn获取日志消息
import pysvn
class svncheck():
def __init__(self, svn_root="http://10.11.25.3/svn/Moodle/modules", svn_user=None, svn_password=None):
self.user = svn_user
self.password = svn_password
self.root = svn_root
def diffrence(self):
client = pysvn.Client()
client.commit_info_style = 1
client.callback_notify = self.notify
client.callback_get_login = self.credentials
log = client.log(
self.root,
revision_start=pysvn.Revision( pysvn.opt_revision_kind.number, 0),
revision_end=pysvn.Revision( pysvn.opt_revision_kind.number, 5829),
discover_changed_paths=True,
strict_node_history=True,
limit=0,
include_merged_revisions=False,
)
print log
def notify( event_dict ):
print event_dict
return
def credentials(realm, username, may_save):
return True, self.user, self.password, True
s = svncheck()
s.diffrence()
Run Code Online (Sandbox Code Playgroud)
当我运行此脚本时,它返回一个空字典对象 [<PysvnLog ''>, <PysvnLog ''>, <PysvnLog ''>,..
知道我在这里做错了什么吗?我正在使用pysvn版本1.7.2再次构建svn版本1.6.5为Nash欢呼
嘿伙计们,我pysvn.Client.callback_ssl_server_trust_prompt required在尝试提交时遇到错误.我理解它与信任互联网验证有关.
这是文档,我只是不明白.
pysvn.Client.callback_ssl_server_trust_prompt
import pysvn
def ssl_server_trust_prompt( trust_dict ):
return retcode, accepted_failures, save
client = pysvn.Client()
client.callback_ssl_server_trust_prompt = ssl_server_trust_prompt
Run Code Online (Sandbox Code Playgroud)
每次HTTPS服务器提供证书时都会调用callback_ssl_server_trust_prompt,而subversion不确定它是否应该被信任.调用callback_ssl_server_trust_prompt,其中包含有关trust dict中证书的信息.
failure - int - 失败的位掩码 - [这些位是什么意思?] hostname - string - 证书从finger_print呈现的主机名 - 字符串 - 证书指纹valid_from - 字符串 - 从此ISO8601日期有效valid_until - string - valid util这个ISO8601 date issuer_dname - stirng - 发布的dname领域 - 字符串 - 领域pysvn期望callback_ssl_server_trust_prompt返回三个值的元组(retcode,accepted_failures,save).
retcode - boolean,如果没有可用的用户名和密码,则为False.如果subversion使用用户名和密码,则为True.accepted_failures - int,允许接受的失败save - boolean,如果你想让subversion记住配置目录中的证书,则返回True.返回False以防止保存证书.
我在RHEL 6上安装了Python 2.7.3,当我尝试安装pysvn-1.7.6时,出现了错误.我该怎么办?
/search/python/pysvn-1.7.6/Import/pycxx-6.2.4/CXX/Python2/Objects.hxx:2912: warning: deprecated conversion from string constant to 'char*'
Compile: pysvn_svnenv.cpp into pysvn_svnenv.o
Compile: pysvn_profile.cpp into pysvn_profile.o
Compile: /search/python/pysvn-1.7.6/Import/pycxx-6.2.4/Src/cxxsupport.cxx into cxxsupport.o
Compile: /search/python/pysvn-1.7.6/Import/pycxx-6.2.4/Src/cxx_extensions.cxx into cxx_extensions.o
Compile: /search/python/pysvn-1.7.6/Import/pycxx-6.2.4/Src/cxxextensions.c into cxxextensions.o
Compile: /search/python/pysvn-1.7.6/Import/pycxx-6.2.4/Src/IndirectPythonInterface.cxx into IndirectPythonInterface.o
Link pysvn/_pysvn_2_7.so
make: *** No rule to make target `egg'. Stop.
error: Not a URL, existing file, or requirement spec: 'dist/pysvn-1.7.6-py2.7-linux-x86_64.egg'
Run Code Online (Sandbox Code Playgroud) pysvn ×10
python ×9
svn ×2
pip ×1
python-3.x ×1
review-board ×1
ssh ×1
virtualenv ×1
windows ×1