[英]Python traceback points to non-existent file
我正在嘗試運行setup.py
腳本(用於mnemosyne )。 該腳本失敗,如果只能找到要編輯的文件,我敢肯定我知道如何解決該問題。 問題是回溯指向不存在的文件:
File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 49, in locate
loader=loader.filename)
TypeError: dyld_find() got an unexpected keyword argument 'loader'
我相信應該是loader_path
。 問題是MachOGraph.py
文件不存在-在我當前路徑或anaconda發行版中都沒有。 有一個build/bdist.macosx-10.5-x86_64/
目錄,但是沒有egg
。 我的系統上有一些MachOGraph.py
文件,但是沒有一個文件顯示該行。 此目錄下的任何內容都不包含字符串loader.filename
。
這是怎么回事? 如何找到該文件?
為了完整起見,這是完整的回溯:
Traceback (most recent call last):
File "/Users/mike/.continuum/anaconda/lib/python2.7/site-packages/ipdb/__main__.py", line 157, in main
pdb._runscript(mainpyfile)
File "/Users/mike/.continuum/anaconda/lib/python2.7/pdb.py", line 1233, in _runscript
self.run(statement)
File "/Users/mike/.continuum/anaconda/lib/python2.7/bdb.py", line 400, in run
exec cmd in globals, locals
File "<string>", line 1, in <module>
File "setup.py", line 241, in <module>
app = py2app_app
File "/Users/mike/.continuum/anaconda/lib/python2.7/distutils/core.py", line 151, in setup
dist.run_commands()
File "/Users/mike/.continuum/anaconda/lib/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/Users/mike/.continuum/anaconda/lib/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/usr/local/src/Mnemosyne-2.3.1/py2app-0.8.1-py2.7.egg/py2app/build_app.py", line 654, in run
self._run()
File "/usr/local/src/Mnemosyne-2.3.1/py2app-0.8.1-py2.7.egg/py2app/build_app.py", line 860, in _run
self.run_normal()
File "/usr/local/src/Mnemosyne-2.3.1/py2app-0.8.1-py2.7.egg/py2app/build_app.py", line 950, in run_normal
self.create_binaries(py_files, pkgdirs, extensions, loader_files)
File "/usr/local/src/Mnemosyne-2.3.1/py2app-0.8.1-py2.7.egg/py2app/build_app.py", line 1110, in create_binaries
platfiles = mm.run()
File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOStandalone.py", line 105, in run
mm.run_file(fn)
File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 84, in run_file
self.scan_node(m)
File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 110, in scan_node
m = self.load_file(filename, caller=node)
File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 93, in load_file
newname = self.locate(name, loader=caller)
File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOStandalone.py", line 23, in locate
newname = super(FilteredMachOGraph, self).locate(filename, loader)
File "build/bdist.macosx-10.5-x86_64/egg/macholib/MachOGraph.py", line 49, in locate
loader=loader.filename)
TypeError: dyld_find() got an unexpected keyword argument 'loader'
此問題是由Pillow引起的,您可以使用pip uninstall Pillow
進行卸載,然后此問題將消失。
打印回溯時,Python會采用字節碼中報告的文件名。 在這種情況下,字節碼包含為生成Python egg而生成的文件名,該格式至少包含字節碼文件。 這些路徑反映了相對於軟件包構建時的構建目錄。
在這種情況下, py2app安裝程序包括macholib作為安裝要求; setuptools下載該庫的源代碼,並根據需要在與py2app
egg相同的位置生成一個egg。 我會在/usr/local/src/Mnemosyne-2.3.1/py2app-0.8.1-py2.7.egg
查找macholib-1.6-py2.7.egg
目錄。
使用macholib1.7,從** / MachOGraph.py ...的第46行開始:
try:
fn = dyld_find(filename, env=self.env,
executable_path=self.executable_path,
loader=loader.filename)
self.trans_table[(loader.filename, filename)] = fn
except ValueError:
return None
將第49行更改為:
loader_path=loader.filename)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.