我想我快疯了。我只想在macbook air上的python virtualenv中安装pygit2
,这样我就可以开始工作了。不过,这并不是在犹豫,我已经尝试了一整天。
我应该遵循以下指示:
http://www.pygit2.org/install.html#how-to-install
我已经尝试了无数次,搞乱了rpath
,因为显然在macs上,这是以不同的方式实现的:
How to set the runtime path (-rpath) of an executable with gcc under Mac OSX?
... 在这一点上,我只是猜测,还有无数的其他变化,但是每次我试图构建pygit2
时,总是会导致这样的结果:
(testenv)emil ~/sites/env/testenv/pygit2 > which python
/Users/emil/Sites/env/testenv/bin/python
(testenv)emil ~/sites/env/testenv/pygit2 > python -c 'import pygit2'
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "pygit2/__init__.py", line 32, in <module>
import _pygit2
ImportError: dlopen(/Users/emil/sites/env/testenv/lib/python2.7/site-packages/_pygit2.so, 2): Symbol not found: _git_remote_fetchspec
Referenced from: /Users/emil/sites/env/testenv/lib/python2.7/site-packages/_pygit2.so
Expected in: flat namespace
in /Users/emil/sites/env/testenv/lib/python2.7/site-packages/_pygit2.so
它似乎没有正确地链接库:
(testenv)emil ~/sites/env/testenv/pygit2 > nm /Users/emil/sites/env/testenv/lib/python2.7/site-packages/_pygit2.so | grep _git | less
000000000000626c T _Repository_git_object_lookup_prefix
0000000000011288 d _Repository_git_object_lookup_prefix__doc__
U _git_blob_create_frombuffer
U _git_blob_create_fromdisk
U _git_blob_create_fromworkdir
U _git_blob_rawsize
U _git_checkout_head
U _git_checkout_index
U _git_checkout_tree
U _git_commit_author
U _git_commit_committer
U _git_commit_create
U _git_commit_free
U _git_commit_lookup
U _git_commit_lookup_prefix
...
当我尝试使用pip时,它会说:
(testenv)emil ~/sites/env/testenv/pygit2 > pip install pygit2
Requirement already satisfied (use --upgrade to upgrade): pygit2 in /Users/emil/sites/env/testenv/lib/python2.7/site-packages
Cleaning up...
(testenv)emil ~/sites/env/testenv/pygit2 > pip install pygit2 --upgrade
Requirement already up-to-date: pygit2 in /Users/emil/sites/env/testenv/lib/python2.7/site-packages
Cleaning up...
如果有人在我感谢任何帮助之前设置了这个,否则我将使用这个来记录问题和组织我的想法,并希望记录一个解决方案。
最佳答案
pygit2网站上的说明似乎有点误导。它们的默认分支(master
)绑定目标libgit2的master
分支(即最新版本,此时为0.18.0),但libgit2的默认分支是development
。网站上“最新”的意思还不清楚。
链接器找不到的函数自上一个版本以来已被删除,因此看起来您只是在针对错误的libgit2版本进行构建。使用libgit2的master
分支或它的v0.18.0
标记,就可以了。
关于python - 在Mac上的Python virtualenv中安装pygit2/libgit2,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16570217/