python – 为什么find_packages行为依赖于pip包的导入?

python – 为什么find_packages行为依赖于pip包的导入?,第1张

概述我有以下项目结构: prog __init__.pytests subpak __init__.py __init__.pyrun1.pyrun2.py run1.py: #!/usr/bin/env python3from setuptools import find_packagesfor i in sorted(find_packages(exclude=[ 我有以下项目结构:

prog  __init__.pytests  subpak    __init__.py  __init__.pyrun1.pyrun2.py

run1.py:

#!/usr/bin/env python3from setuptools import find_packagesfor i in sorted(find_packages(exclude=['tests'])):    print(i)

run2.py:

#!/usr/bin/env python3import pipfrom setuptools import find_packagesfor i in sorted(find_packages(exclude=['tests'])):    print(i)

其余文件都是空的.环境 – Debian测试. python 3.5.

run1.py输出:

$python3 run1.py prog

run2.py输出:

$python3 run2.py progtests.subpak

也就是说,当在pip之后导入find_packages时,它不再排除被排除的包的子包.为什么会发生这种特殊行为?这种特殊行为涉及哪种机制?

编辑:
看来pip或其某些依赖项正在改变syspath,而setuptools模块则不同. RUN1:

<module 'setuptools' from '/usr/lib/python3/dist-packages/setuptools/__init__.py'>

RUN2:

<module 'setuptools' from '/usr/share/python-wheels/setuptools-20.10.1-py2.py3-none-any.whl/setuptools/__init__.py'>
解决方法 pip进口车轮支撑,这似乎是解锁你不知道你有的车轮:

<module 'setuptools' from '/usr/share/python-wheels/setuptools-20.10.1-py2.py3-none-any.whl/setuptools/__init__.py'>

如果没有方向盘,您将导入系统范围的setuptools版本:

<module 'setuptools' from '/usr/lib/python3/dist-packages/setuptools/__init__.py'>

这个版本似乎被打破了,因为应该包含test.subpack(通过在排除列表中添加’tests.*’来过滤掉它).

总结

以上是内存溢出为你收集整理的python – 为什么find_packages行为依赖于pip包的导入?全部内容,希望文章能够帮你解决python – 为什么find_packages行为依赖于pip包的导入?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1197740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存