不知何故(由于一些不好的建议),我相信已经被我的项目目录的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
“包”?我使用的是anaconda4.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
中删除项目目录。。。我该怎么做?一开始是怎么做到的
这个问题是由OP在开发模式下安装项目的旧版本引起的,使用系统Python解释器而不是在venv中(提示:不要这样做)。在
easy-install.pth
中创建一行,使项目目录在sys.path
中可用在
site-packages
目录中找到easy-install.pth
文件,然后删除以下开头的所有行:至于你的项目结构, 我建议您从tests子目录中删除
__init__.py
。这不是必需的,这意味着如果您使用的是find_packages()
helper,您必须显式排除tests
我安装了您的v0.0.5发行版,问题不再存在于该版本中。Python2的发行版已损坏,您应该在
setup.py
安装调用中包含python_requires='>=3'
,以便生成适当的元数据,防止pip尝试在Python2上安装它相关问题 更多 >
编程相关推荐