<p>我遇到了同样的问题,我有几个内部python包包含LFS文件。它们都有自己的<code>requirements.txt</code>和<code>setup.py</code>文件,其中一个基于pip,不能很好地处理<code>git lfs</code>,另一个基于{<cd4>}。。。在</p>
<p>我的<code>requirements.txt</code>看起来像:</p>
<pre><code>pip_package1==0.1
pip_package2==0.2
pip_package3==0.3
git+ssh://git@{url}:{port}/{repo}.git@{branch}
</code></pre>
<p>在<code>setup.py</code>中,一个解决方案是捕获任何<code>git+ssh</code>,不让它们进入<code>setup</code>函数,而是通过pip强制安装它们:</p>
^{pr2}$
<p>那么<code>pip</code>/<code>git lfs</code>兼容性。我所理解的是git repo上的<code>pip install</code>将简单地<code>git clone</code>,然后<code>python setup.py [something]</code>,所以我在一个包含lfs文件的包中添加了一个<code>git pull</code>,假设相关的<code>setup.py</code>在git存储库中。在</p>
<pre><code>def pull_first():
"""This script is in a git directory that can be pulled."""
cwd = os.getcwd()
gitdir = os.path.dirname(os.path.realpath(__file__))
os.chdir(gitdir)
g = git.cmd.Git(gitdir)
try:
g.execute(['git', 'lfs', 'pull'])
except git.exc.GitCommandError:
raise RuntimeError("Make sure git-lfs is installed!")
os.chdir(cwd)
</code></pre>
<p>这样我就得到了<code>setup.py</code>:</p>
<pre><code>from setuptools import setup, find_packages
import os
import subprocess
import sys
try:
import git
except ModuleNotFoundError:
subprocess.call([sys.executable, '-m', 'pip', 'install', 'gitpython'])
import git
def install_requires():
...
def pull_first():
...
pull_first()
setup(name=...,
version=...,
description=...,
long_description=...,
url=...,
author=...,
license=...,
packages=find_packages(),
python_requires=">=3.0",
install_requires=install_requires())
</code></pre>