不知何故(由于一些不好的建议)我相信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.py develop
)。我随后删除了(pip uninstall my_package
)多次安装(并重新添加)。
尽管删除它,我现在发现我似乎有一个名为tests
的包可用于导入!包路径指向我项目的目录:
>>> import tests
>>> tests.__path__
_NamespacePath(['c:\\users\\username\\projects\\projectname\\tests'])
我猜这是因为使用最初破坏的软件包组织安装我的软件包而发生的。
如何删除此tests
&#34;包&#34;从我的路径?我正在使用Anaconda 4.3(最新版本)。 pip uninstall tests
没有成功。
注意:我的项目也已经发布到pypi(项目名称:parmatter),我确实从那里安装了一次作为测试,但只有在使用修改后的项目组织结构之后,所以我不认为这是原因。如果有人想安装它并看它是否会导致同样的问题,这至少可以帮助我确定原因。
项目回购:https://github.com/Ricyteach/parmatter
以下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
删除项目目录...我该怎么做?它是如何在第一时间到达那里的?
答案 0 :(得分:1)
问题是由OP在开发模式下安装旧版本的项目引起的,使用系统Python解释器而不是在venv中(提示:不要这样做)。这在easy-install.pth
中创建了一条线,使sys.path
中的项目目录可用。
在easy-install.pth
目录中找到site-packages
文件,并删除以这样开头的所有行:
c:\\users\\username\\projects
至于你的项目结构,
我建议您从tests子目录中删除__init__.py
。这不是必需的,并且意味着如果您正在使用{{},则必须明确排除tests
{1}}帮助者。
我安装了您的v0.0.5发行版,问题不会保留在该版本中。您的发行版已针对Python 2中断,您应在find_packages()
安装调用中包含python_requires='>=3'
,以便生成适当的元数据以防止pip尝试在Python 2上安装它。