我想我快疯了。我只想在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/

10-14 05:50