在解开包后,它在某个目录中查找“setup.py”,但在那里找不到它. setup.py文件实际上是一个目录.
它正在寻找:
'virtualenvs/pyling/build/nltk/setup.py'
但它实际上是:
virtualenvs/pyling $ls build/nltk/nltk-2.0b9/INSTALL.txt javasrc liCENSE.txt nltk PKG-INFO README.txt setup.py
有没有办法让pip知道包中的这个嵌套文件夹结构?
谢谢
解决方法 我发现pip运行的python命令行脚本如下所示:__file__ = '<path to package>/setup.py'from setuptools.command import egg_infodef replacement_run(self): self.mkpath(self.egg_info) installer = self.distribution.fetch_build_egg for ep in egg_info.iter_entry_points('egg_info.writers'): # require=False is the change we're making: writer = ep.load(require=False) if writer: writer(self,ep.name,egg_info.os.path.join(self.egg_info,ep.name)) self.find_sources()egg_info.egg_info.run = replacement_runexecfile(__file__)
在软件包的顶级目录中,没有setup.py,我放置了一个可以重现此行为的setup.py,但是chdir到包含“真正的”setup.py的目录,并在最后执行.
唯一的另一个问题是pip创建了一个目标“pip-egg-info”,它希望填充该目录,需要在具有“真实”setup.py的目录中创建一个符号链接.
新的顶级setup.py看起来像这样:
#! /usr/bin/env pythonfrom os import chdir,symlink,getcwdfrom os.path import join,basename,existsfilename = basename(__file__)chdir("python")setupdir = getcwd()egginfo = "pip-egg-info"if not exists(egginfo) and exists(join("..",egginfo)): symlink(join("..",egginfo),egginfo)__file__ = join(setupdir,filename)from setuptools.command import egg_infodef replacement_run(self): self.mkpath(self.egg_info) installer = self.distribution.fetch_build_egg for ep in egg_info.iter_entry_points('egg_info.writers'): # require=False is the change we're making: writer = ep.load(require=False) if writer: writer(self,ep.name)) self.find_sources()egg_info.egg_info.run = replacement_runexecfile(__file__)
它可能很脆弱,但应该继续工作,直到pip更改它生成的命令行python代码
总结以上是内存溢出为你收集整理的python – pip找不到安装文件全部内容,希望文章能够帮你解决python – pip找不到安装文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)