파이썬 에그 캐시 (PYTHON_EGG_CACHE) 란 무엇입니까?
개발 컴퓨터에서 Python 2.6.1에서 2.6.4로 방금 업그레이드했으며 Python 스크립트를 시작하면 다음 메시지가 표시되었습니다.
에그 캐시로 파일을 추출 할 수 없습니다.
Python 달걀 캐시에 파일을 추출하는 동안 다음 오류가 발생했습니다.
[Errno 13] 권한 거부 됨 : '/var/www/.python-eggs'
Python egg 캐시 디렉토리는 현재 다음과 같이 설정되어 있습니다.
/var/www/.python-eggs
아마도 귀하의 계정에이 디렉토리에 대한 쓰기 권한이 없습니까? 액세스 가능한 디렉토리를 가리 키도록 PYTHON_EGG_CACHE 환경 변수를 설정하여 캐시 디렉토리를 변경할 수 있습니다.
파이썬 문서 에는 아무것도 없기 때문에이 디렉토리를 어디에 넣을지, 그리고 무엇을 위해 사용하는지에 대한 모범 사례와 관련하여 약간의 손실이 있습니다.
누군가 파이썬 달걀 캐시가 무엇인지 설명 할 수 있습니까?
또한 site-packages
파이썬이 계란을 저장하는 데 사용 하는 디렉토리 와 다른 이유 / 어떻게 설명 할 수 있습니까?
내 조사에서 일부 계란은 zip 파일로 패키지되어 Python의 site-packages
디렉토리 에 저장되는 것으로 나타났습니다 .
이 압축 된 달걀은 실행되기 전에 압축을 풀어야하므로 PYTHON_EGG_CACHE
기본적으로 ~/.python-eggs
(사용자의 홈 디렉토리에있는) 디렉토리 로 확장됩니다 . 이것이 존재하지 않으면 응용 프로그램을 실행할 때 문제가 발생합니다.
여러 가지 수정 사항이 있습니다.
- 크리에이트
.python-eggs
사용자의 홈 디렉토리에있는 디렉토리를하고 사용자에게 쓰기 가능합니다. - 압축 해제를위한 전역 디렉토리 (예 :)를
/tmp/python-eggs
만들고 환경 변수PYTHON_EGG_CACHE
를이 디렉토리로 설정합니다 . - 사용할 때
-Z
스위치를 사용하여easy_install
설치할 때 패키지의 압축을 풉니 다.
파이썬 에그 캐시는 단순히 에그 사양 을 준수하는 설치된 패키지를 저장하기 위해 setuptools에서 사용하는 디렉토리 입니다. 여기에서 setuptools에 대해 자세히 읽을 수 있습니다 .
또한 오류 메시지에 나와 있듯이 PYTHON_EGG_CACHE = / some / other / dir을 설정하여 환경에서 다른 에그 캐시 디렉토리를 지정할 수 있습니다. 이를 수행하는 가장 쉬운 방법은 다음과 같이 ~ / .bash_profile (bash를 사용한다고 가정)에 설정하는 것입니다.
export PYTHON_EGG_CACHE=/some/other/dir
웹 애플리케이션을 사용하는 경우 Apache 환경에서 설정해야 할 수 있습니다.
이것은 다른 좋은 계란 메커니즘을 사용하는 어두운 부작용입니다.
Eggs는 .egg
depolyment를 단순화하기 위해 하나의 파일로 포장 된 패키지 (파일로 가득 찬 디렉토리) 입니다.
그들은 /site-packages/
dir 에 저장됩니다 .
계란에 저장된 .py
파일 이 파일이면 훌륭하게 작동합니다. 파이썬 가져 오기는 일반 파일처럼 모든 파일 류 객체에서 가져올 수 있습니다.
그러나 그런 .so
일이 발생하면 파이썬은 기본 OS에 물리적 이름이없는 라이브러리를로드하고 싶다고 설명 할 수 없습니다. distutils 작성자가 생각한 유일한 해결 방법은 임시 디렉토리에 압축을 푸는 것입니다. 당연히 일반 사용자가 쓸 수 없기 /site-packages/
때문에 /site-packages/
그렇지 않습니다.
그래서 당신은
설정
PYTHON_EGG_DIR
하기 위해/tmp
, 또는사용자 줄
www
에 쓰기 권한/var/www/.python-eggs
(그래서 파일이 / tmp에 정리 될 때마다 압축을 푼되지 않는 것이) 더 나은 다음 또는@ shalley303이 제안한대로 계란의 압축을 풉니 다
(그리고 런타임에 계란의 압축을 완전히 풉니 다 ).
Python egg는 Python 모듈과 메타 데이터를 모두 포함하는 zip 압축 패키지입니다. 에그 캐시는 에그의 추출 된 내용이 저장되어 포함 된 Python 모듈을 사용할 수있는 곳입니다.
.egg를 설치 한 후 사용을 비활성화 할 수도 있습니다. site-packages 디렉토리로 이동하여 .egg를 추출한 다음 숨겨진 파일로 이동 (또는 삭제 등)해야합니다.
다음은 Zabbix에서 Python 스크립트를 실행할 때이 오류를 일으키는 MySQLdb 모듈 .egg 파일을 비활성화하기 위해 수행 한 작업의 예입니다.
cd /usr/local/lib/python2.7/site-packages MySQL_python-1.2.3-py2.7-linux-x86_64.egg의 압축을 풉니 다. mv MySQL_python-1.2.3-py2.7-linux-x86_64.egg .MySQL_python-1.2.3-py2.7-linux-x86_64.egg
Phillip B Oldham의 말이 맞습니다. 코드에 다음 줄을 추가 할 수 있습니다.
import os
os.environ['PYTHON_EGG_CACHE'] = '/tmp' # a writable directory
간단한 수정은 디렉토리를 생성하고 이에 대한 www-data
액세스를 제공 하는 것입니다.
$ mkdir /var/www/.python-eggs
$ chown www-data:www-data /var/www/.python-eggs
참고 URL : https://stackoverflow.com/questions/2192323/what-is-the-python-egg-cache-python-egg-cache
'Programing' 카테고리의 다른 글
Python Pandas : 그룹 별 및 평균? (0) | 2020.10.30 |
---|---|
MVC ASP.NET에서 HttpContext.Current와 Controller.Context의 차이점 (0) | 2020.10.30 |
UnicodeEncodeError : 'ascii'코덱은 위치 3의 u '\ u2013'문자를 인코딩 할 수 없습니다. 2 : 서 수가 범위에 없습니다 (128). (0) | 2020.10.30 |
shared_ptr을 언제 사용하고 언제 원시 포인터를 사용합니까? (0) | 2020.10.30 |
왜 이것을 확인하십시오! = null? (0) | 2020.10.30 |