Windows环境下存在.git文件夹时pip可编辑安装失败问题
解决Git目录存在时pip可编辑安装失败的问题
根据你描述的场景——Windows Anaconda环境下,你的极简Python包在无.git目录时pip install -e .正常,添加.git目录后安装失败——大概率是setuptools的包扫描逻辑或Git环境下的自动版本检测导致的问题,下面是几种可行的解决方法:
方法1:明确指定包名,替代find_packages()
find_packages()默认会递归扫描所有包含__init__.py的目录,当目录中存在.git这类版本控制目录时,可能会触发不必要的扫描逻辑(甚至误判目录结构)。直接指定包名可以彻底避免这个问题:
修改你的setup.py:
from setuptools import setup setup( name='eg', version='1.0.0.dev0', description='Example', url='', author='', author_email='', license='', packages=['eg'], # 直接指定你的包名称 install_requires=[] )
方法2:让find_packages()排除.git目录
如果你依然想使用find_packages(),可以通过exclude参数明确排除.git目录,防止它被误扫描:
from setuptools import setup, find_packages setup( name='eg', version='1.0.0.dev0', description='Example', url='', author='', author_email='', license='', packages=find_packages(exclude=['.git']), # 排除.git目录 install_requires=[] )
方法3:禁用setuptools的自动版本检测
如果你的Anaconda环境中默认安装了setuptools_scm,当目录是Git仓库时,它会自动尝试从Git提交记录生成版本号,这会覆盖你手动指定的version参数,进而导致安装失败。可以在setup()中明确禁用这个功能:
from setuptools import setup, find_packages setup( name='eg', version='1.0.0.dev0', description='Example', url='', author='', author_email='', license='', packages=find_packages(), install_requires=[], use_scm_version=False # 禁用自动版本检测 )
方法4:添加--no-build-isolation参数执行安装
有时候pip的构建隔离机制在Git仓库环境下会引入依赖冲突,尝试跳过构建隔离执行安装:
pip install -e . --no-build-isolation
你可以先尝试方法1,这是最直接规避目录扫描问题的方案,大概率能解决你的问题。
内容的提问来源于stack exchange,提问作者rsant
相关产品推荐
相关产品推荐

