2012-02-16 8 views
0

OSX Lion에서 MySQLdb를 사용하는 Python 스크립트가 있습니다. MySQLdb가 작동하게하려면 ~ ~ .bash_profile에PATH 변수를 Apache에 제공하는 방법은 무엇입니까? (OSX Lion)

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH 

을 추가해야했습니다. python 스크립트는 명령 행에서 실행될 때 정상적으로 작동합니다.

exec() 함수를 사용하여 PHP 스크립트에서 동일한 파이썬 스크립트를 실행하려고하면 파이썬 스크립트가 라이브러리 경로를 찾을 수 없습니다.

ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib 
    Referenced from: /Library/Python/2.7/site-packages/_mysql.so 
    Reason: image not found 

난이 있으리라 믿고있어 내가 그것을 해결하는 방법에 불분명 해요 불구하고 사용자 문제 다음은 아파치 로그에서 ERR의 MSG입니다.

내 컴퓨터의 모든 스크립트와 사용자가 전역 적으로 사용할 수 있도록이 경로를 어디에 두어야합니까? (적어도 Apache와 Root에 이르기까지)

+0

추가 정보/설명 : 터미널에서 일반 비 루트 사용자로 파이썬을 실행하면 "import MySQLdb"가 작동합니다. 내가 sudo하고 같은 시도, 오류가 발생합니다. 따라서 문제는 사용자의 범위 중 하나 여야합니다. 모든 사용자가 사용할 수 있도록 DYLD_LIBRARY_PATH를 적절한 위치에 내보내 파이썬 외부에서이 문제를 해결하고 싶습니다. 그러나이 작업을 수행 할 위치/방법을 알지 못합니다. – Tapefreak

+0

'/ etc/bash.bashrc' – Gandaro

답변

1

솔루션 :이 환경 변수 PYTHONPATH에서 초기화

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib 

이 솔루션은 this post에 의견에서 찍은 : 소프트 링크가 속임수를 썼는지 만들기. 아마도이 솔루션은 OSX에서 MySQLdb와의 또 다른 어려움을 해결할 것입니다.

다른 사용자가 아닌 다른 사용자가 아닌 이유 - 또는 오히려 어떤 파일에 대해 위에서 언급 한 내보내기가 저장되어 있어야 모든 사용자가 사용할 수 있도록해야하는지 명확하지 않지만. 이것에 대한 설명은 감사하겠습니다.

+0

아파치는 .bash_profile을 읽지 않으므로 환경 변수를 선택하지 않습니다. – duskwuff

0

sys.path 배열을 수정해야하는 것처럼 보입니다. http://docs.python.org/library/sys.html#sys.path

+0

아니요, 파이썬 밖의 해결책이 있습니다. 나는이 같은 코드가 다른 dev 컴퓨터 (Snow Leopard)에서 작동하도록했다. 난 그냥 UNIX에서 사용자/권한 승/도움이 필요해 ... – Tapefreak

0

Apache의 경우 PYTHONPATH 항목을 Apache가 실행하는 모든 항목에서 사용할 수 있도록 /System/Library/LaunchDaemons/org.apache.httpd.plist의 EnvironmentVariables 섹션에 추가 할 수 있습니다. 자세한 내용은 man launchd.plist을 참조하십시오.

루트의 경우 export PYTHONPATH를 /etc/profile에 추가하면 모든 sh 및 bash 로그인 쉘에서 사용할 수 있습니다. 자세한 내용은 man bash을 참조하십시오.

관련 문제