setuptools 寻找虚假依赖
我遇到了一个奇怪的问题,我在Linux系统上尝试安装我的Python包(用setuptools),结果它却试图把pywin32作为依赖项安装。这个问题只在我从一个特定的目录运行时出现。如果我把整个文件夹移动到另一个目录,就能正常安装。
我的setup.py文件确实提到了win32平台的pywin32,但即使我把它删掉,情况也没有改变。我还删除了其他所有的依赖项,但行为依旧没有变化。我的setup.py里除了setuptools的初始化和调用setup(),什么都没有。
我已经激活了一个虚拟环境,并尝试切换到一个新的干净的虚拟环境,结果也没有改变。当我运行setup.py develop
时,我看到以下内容:
python setup.py develop
running develop
running egg_info
deleting foo.egg-info/requires.txt
writing foo.egg-info/PKG-INFO
writing top-level names to foo.egg-info/top_level.txt
writing dependency_links to foo.egg-info/dependency_links.txt
reading manifest file 'foo.egg-info/SOURCES.txt'
writing manifest file 'foo.egg-info/SOURCES.txt'
running build_ext
Creating /home/user/foo-env2/lib/python2.7/site-packages/foo.egg-link (link to .)
foo 1.0 is already the active version in easy-install.pth
Installed /home/user/magicdirectory/magic
Processing dependencies for foo==1.0
Searching for pywin32
Reading http://pypi.python.org/simple/pywin32/
Reading http://sf.net/projects/pywin32
现在,我可能在某个时候不小心尝试安装了这个包的win32版本,但那是在原来的虚拟环境里,我搞不清楚这可能造成了什么影响。
我该如何调试这个问题?setuptools还可能从哪里寻找依赖项呢?
更新:看来问题不在于目录的名字,而是它的位置。如果我把包的目录上移一级,就能正常安装。这里提到的目录已经被删除并重新创建过多次,所以似乎和目录内部的内容没有关系。
1 个回答
0
试着删除一下在 dist develop 目录下的 *.egg-info 文件。如果这样还不行,可以尝试从一个全新的、没有任何修改的代码版本开始,看看这样是否会出现同样的问题。如果没有出现问题,那就说明是某个 setuptools/dist 相关的文件出了问题,需要清理一下。