在Ubuntu中运行flexget Python脚本,我收到一个错误:
$ flexget series forget "Orange is the new black" s03e01
Traceback (most recent call last):
File "/usr/local/bin/flexget", line 7, in <module>
from flexget import main
File "/usr/local/lib/python2.7/dist-packages/flexget/__init__.py", line 11, in <module>
from flexget.manager import Manager
File "/usr/local/lib/python2.7/dist-packages/flexget/manager.py", line 21, in <module>
from sqlalchemy.ext.declarative import declarative_base
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/ext/declarative/__init__.py", line 8, in <module>
from .api import declarative_base, synonym_for, comparable_using, \
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/ext/declarative/api.py", line 11, in <module>
from ...orm import synonym as _orm_synonym, \
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/__init__.py", line 17, in <module>
from .mapper import (
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/mapper.py", line 27, in <module>
from . import properties
ValueError: bad marshal data (unknown type code)
答案 0 :(得分:77)
如果您收到该错误,Python模块的编译版本(.pyc文件)可能已损坏。 Gentoo Linux提供python-updater
,但在Debian中更容易修复:只需删除.pyc文件即可。如果您不知道pyc,只需删除所有这些(以root身份):
find /usr -name '*.pyc' -delete
答案 1 :(得分:18)
删除
/usr/local/lib/python2.7/dist-packages/sqlalchemy/orm/properties.pyc
正如文字所示,它已经腐败了。你可能必须这样做root
。
在那之后(再次以root身份)运行python(2.7):
/usr/bin/python -c "import sqlalchemy.orm.properties"
重新创建此.pyc
文件。
如果不重新创建.pyc
文件,则程序启动速度比必要慢,因为.py
文件加载的时间比.pyc
长(并且普通用户无法写入.pyc
文件)。
答案 2 :(得分:5)
如果你有Python 2.7 .pyc文件并尝试使用Python 3.5加载它们,就会发生这种情况。在我的例子中,这是第三方tarball错误地包含预编译的Python 2.7 .pyc文件以及源代码。
答案 3 :(得分:5)
setuptools中似乎还存在与python 3.7一起使用的某种回归方式。查看示例-https://redux.js.org/recipes/structuring-reducers/reusing-reducer-logic
强制重新安装setuptools为我解决了此问题。
sudo pip3 install --upgrade --force-reinstall setuptools
答案 4 :(得分:0)
我通过使用系统包管理器卸载并重新安装我正在使用的Python应用程序以及所有依赖项,解决了类似的错误。
在我的情况下,我在Debian 9上使用awscli,错误是“ ValueError:错误的元帅数据(设置的大小超出范围)”。
我以root身份运行:
apt-get purge awscli
apt-get autoremove
apt-get install awscli
然后错误被修复。
我可以想象破损的软件包可能无法删除的情况(例如,因为它被标记为手动安装,或者仍然是另一个应用程序的依赖项),在这种情况下,此操作可能无法解决错误。但是我认为我应该尝试这种方式,然后再手动删除已安装系统的.pyc文件,我很幸运。
答案 5 :(得分:0)
我在Windows环境(win 10)中也遇到了这个问题。
我通过转到“设置”并使用其安装程序修复Python 3.7对其进行了修复。 从那以后一切都很好。
据我所记得,当我的计算机进入休眠状态时,我使仪表板服务器保持运行状态。 也许是在休眠过程中以某种方式造成了损坏。
答案 6 :(得分:0)
我通过以下过程解决了这个问题:
在错误代码消息中,您可以看到
from sqlalchemy.ext.declarative import declarative_base
导致此错误。
所以只有pip uninstall sqlalchemy
和pip install sqlalchemy
,问题解决了。