2014-10-10 7 views
1

내 프로젝트 중 하나에 종속성을 설치할 때 잘못된 마샬 데이터 오류가 발생합니다. 표준 virtualenv를 사용하여 설치하면 오류없이 정상적으로 작동합니다.zc.buildout에 개인 python lib를 설치할 때 잘못된 마샬 데이터

[buildout] 
versions = versions 
extensions = mr.developer 
unzip = true 
include-site-packages = false 

# FIXME 
# Attempting to install from here via buildout raises a bad marshal data error 
# I should note that this errors does _not_ occur when we install in a 
# clean virtual environment. It only happens in buildout. 
# find-links = https://<myuser>:<mypass>@www.reportlab.com/pypi/simple/rlextra/ 

# Temporary solution, we included the package manually and will add it as 
# a develop egg, then in the "django" part further down, we need to 
# include the package in the extra-paths. 
develop = ${buildout:directory}/libs/rlextra-3.1.9 

역 추적 :

Getting distribution for 'rlextra==3.1.9'. 
zip_safe flag not set; analyzing archive contents... 
rlextra.thirdparty.xlrd.xlsx: module references __file__ 
rlextra.utils.buildutils: module references __file__ 
Traceback (most recent call last): 
    File "<string>", line 1, in <module> 
    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1973, in main 

    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1954, in with_ei_usage 

    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1977, in <lambda> 

    File "/usr/lib/python2.7/distutils/core.py", line 151, in setup 
    dist.run_commands() 
    File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 360, in run 

    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 584, in easy_install 

    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 634, in install_item 

    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 829, in install_eggs 

    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1109, in build_and_install 

    File "build/bdist.linux-x86_64/egg/setuptools/command/easy_install.py", line 1095, in run_setup 

    File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 33, in run_setup 
    File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 81, in run 
    File "build/bdist.linux-x86_64/egg/setuptools/sandbox.py", line 35, in <lambda> 
    File "setup.py", line 78, in <module> 
    File "setup.py", line 73, in main 
    File "/usr/lib/python2.7/distutils/core.py", line 151, in setup 
    dist.run_commands() 
    File "/usr/lib/python2.7/distutils/dist.py", line 953, in run_commands 
    self.run_command(cmd) 
    File "/usr/lib/python2.7/distutils/dist.py", line 972, in run_command 
    cmd_obj.run() 
    File "build/bdist.linux-x86_64/egg/setuptools/command/bdist_egg.py", line 227, in run 
    File "build/bdist.linux-x86_64/egg/setuptools/command/bdist_egg.py", line 266, in zip_safe 
    File "build/bdist.linux-x86_64/egg/setuptools/command/bdist_egg.py", line 402, in analyze_egg 
    File "build/bdist.linux-x86_64/egg/setuptools/command/bdist_egg.py", line 433, in scan_module 
ValueError: bad marshal data (unknown type code) 
An error occured when trying to install rlextra 3.1.9. Look above this message for any errors that were output by easy_install. 

사람이 원인이 될 수 알고 있나요을 여기

내 zc.buildout의 일부 (오류가 주석의 원인 현재 일부)입니다 문제 및 해결 방법에 대해 설명합니다. 우리는 현재 수동으로 다운로드하여 패키지를 포함시킴으로써 관리하고 있습니다 (buildout 구성에서 볼 수있는 것처럼). 이상적이지 않습니다.

+1

전체 추적 오류는 무엇입니까? 'bad marshall data '는 틀린 파이썬 버전이나 그렇지 않으면 손상된 라이브러리에'.pyc' 파일을 가지고있는 것처럼 들립니다. –

+0

추적을 추가했습니다. 그건 내가 파이썬 버전이 원인이라고 생각하지 않는다고 말했다. 나는 그것을 검사 할 것이다 – Andre

+0

우편 안전 검사가 실패하고있다; '.pyc' 파일을로드하려고 시도합니다.이 파일은'marshall'을 사용하여 코드 객체와 상수 값을 저장하고'.pyc' 파일을로드하면 실패합니다. 핍은 알을 지원하지 않기 때문에,이 문제는 보이지 않을 것입니다. 그렇지 않으면 계란에있는 .pyc 파일 중 하나가로드되지 않는 이유가 명확하지 않습니다. –

답변

2

이것은 독점적 인 것으로 간주 된 파일을 난독 화하는 방식과 관련이 있다고 생각합니다. 3 개월 전까지 우리가 숨기기를 원하는 모듈은 Python 버전 (예 : rml2pdf_27.pyc, rml2pdf_33.pyc 등)을 나타내는 원시 pyc 파일로 전송되었습니다.

이제 우리는 컴파일 된 코드를 데이터로 포함하므로 패키지 작성자가 볼 수 없어야합니다. 그 변화는 3.1.9가 만들어진 후에 일어났습니다.

+0

감사합니다. 3.1.38로 업그레이드하면이 문제가 해결되었습니다 :) – Andre