gpt4 book ai didi

python - 错误的 Python 包组织将 `tests` 包安装到我的路径中? ( python )

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:16 25 4
gpt4 key购买 nike

不知何故(由于一些不好的建议)我相信已经bitten通过 using一个shoddy我的项目目录的组织。

目前看起来像这样(很好!):

\projectname
setup.py
LICENSE
MANIFEST.in
README.rst
CHANGELOG.rst
\src
\projectname
__init__.py
\tests
__init__.py
test1.py

但是,它曾经看起来像这样(糟糕!):

\package_name
setup.py
LICENSE
MANIFEST.in
README.rst
CHANGELOG.rst
\projectname <--- main package at top level
__init__.py
\tests
test1.py

在修复我的劣质设置之前,我使用的是项目的可编辑安装(python setup.pydevelop)。我随后多次删除(pip uninstall my_package)安装(并重新添加)。

尽管删除了它,我现在发现我似乎有一个名为 tests 的包可供导入!并且包路径指向我的项目目录:

>>> import tests
>>> tests.__path__
_NamespacePath(['c:\\users\\username\\projects\\projectname\\tests'])

我猜测这是由于使用初始损坏的包组织安装我的包而发生的。

如何从我的路径中删除此tests“包”?我使用的是 Anaconda 4.3(最新版本)。 pip 卸载测试 未成功。

注意:我的项目也已发布到 pypi(项目名称:parmatter),并且我确实从那里安装了一次作为测试,但只是在使用修改后的项目组织结构之后,所以我认为这不是原因。如果有人想安装它并看看它是否会导致同样的问题,那至少可以帮助我确定原因。

项目仓库:https://github.com/Ricyteach/parmatter

来源分布:parmatter-0.0.5.tar.gz

<小时/>

编辑

下面的python -m site结果。

C:\>python -m site
sys.path = [
'C:\\',
'C:\\Users\\ricky\\Anaconda3\\python36.zip',
'C:\\Users\\ricky\\Anaconda3\\DLLs',
'C:\\Users\\ricky\\Anaconda3\\lib',
'C:\\Users\\ricky\\Anaconda3',
'C:\\Users\\ricky\\Anaconda3\\lib\\site-packages',
'C:\\Users\\ricky\\Anaconda3\\lib\\site-packages\\Sphinx-1.5.6-py3.6.egg',
'c:\\users\\ricky\\projects\\parmatter',
'C:\\Users\\ricky\\Anaconda3\\lib\\site-packages\\win32',
'C:\\Users\\ricky\\Anaconda3\\lib\\site-packages\\win32\\lib',
'C:\\Users\\ricky\\Anaconda3\\lib\\site-packages\\Pythonwin',
'C:\\Users\\ricky\\Anaconda3\\lib\\site-packages\\setuptools-27.2.0-py3.6.egg',
]
USER_BASE: 'C:\\Users\\ricky\\AppData\\Roaming\\Python' (doesn't exist)
USER_SITE: 'C:\\Users\\ricky\\AppData\\Roaming\\Python\\Python36\\site-packages' (doesn't exist)
ENABLE_USER_SITE: True

看来我需要从site中删除项目目录...我该怎么做?它最初是如何到达那里的?

最佳答案

该问题是由于 OP 在开发模式下安装旧版本的项目引起的,使用系统 Python 解释器而不是在 venv 中(提示:不要这样做)。这会在 easy-install.pth 中创建一行,使项目目录在 sys.path 中可用。

在您的 site-packages 目录中找到 easy-install.pth 文件,并删除以如下方式开头的所有行:

c:\\users\\username\\projects

至于您的项目结构,我建议您从测试子目录中删除 __init__.py这是不需要的,并且意味着您必须显式排除 tests,如果您正在使用 find_packages() 帮助程序。

我安装了您的 v0.0.5 发行版,该版本中不再存在问题。您的发行版对于 Python 2 来说已损坏,您应该在 setup.py 设置调用中包含 python_requires='>=3' ,以便生成适当的元数据以防止 pip尝试在 Python 2 上安装它。

关于python - 错误的 Python 包组织将 `tests` 包安装到我的路径中? ( python ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44445464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com