easy_install 值错误:坏的marshal数据(未知类型代码)
我正在一个独立的环境中构建项目,但遇到了这个错误:
ValueError: bad marshal data (unknown type code)
An error occurred when trying to install djangorestframework-csv 1.3.3. Look above this message for any errors that were output by easy_install.
While:
Installing django.
Getting distribution for 'djangorestframework-csv'.
Error: Couldn't install: djangorestframework-csv 1.3.3
make: *** [bin/django] Error 1
我试着在网上搜索,发现五天前也有人报告了同样的问题:
https://github.com/mjumbewu/django-rest-framework-csv/issues/18
这个错误在你尝试
easy_install djangorestframework-csv==1.3.3
经过更多的搜索,我发现这个错误是因为有一些错误的 .pyc 文件导致的。
报告这个问题的人说他通过删除 pycache 解决了这个错误。我试着搜索 pycache,并删除了所有名为 __pycache__
的文件夹,但这并没有帮助。有没有人知道怎么解决这个问题?
1 个回答
5
创建这个软件包的人不小心把 __pycache__
这个文件夹也放进了压缩包里。
如果你在使用 buildout
的时候选择了 download-cache
选项,你可以通过打开下载的 djangorestframework-csv-1.3.3.tar.gz
文件,删除这个多余的文件夹来解决这个问题。
你可以在 ${buildout:download-cache}/dist
目录下找到这个文件,然后把它重新打包,去掉那个多余的文件夹:
tar xzvf djangorestframework-csv-1.3.3.tar.gz
rm -rf djangorestframework-csv-1.3.3/rest_framework_csv/__pycache__/
tar czvf djangorestframework-csv-1.3.3.tar.gz djangorestframework-csv-1.3.3
现在再运行一次你的 buildout
,它就会使用修复过的缓存文件了。
不过很遗憾,我们不能用 find-links
来指向修复过的版本,因为这个选项只有在默认的包索引(比如 PyPI)没有这个包的时候才会用到。