簡體   English   中英

Python追溯指向不存在的文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM