2012-10-03 6 views
0

관리자가 일부 Python 응용 프로그램을 모니터링하는 solaris 서버를 실행 중입니다. 서버의 디렉토리에서Paster는 프로그램 디렉토리에서 실행해야합니까?

paster serve /opt/pyapps/menuadmin/prod.ini 

:

이전에, 나는 명령을 실행할 수 있습니다. 최근 문제가 있었고/opt 폴더가 이전 백업에서 복원되었습니다. 이 폴더에는 수퍼바이저를 포함한 모든 응용 프로그램이 포함되어 있습니다.

이제 Pylons의 "버전 충돌"때문에 감독자가 응용 프로그램을 시작하지 않는 문제가 있습니다.

이것은 이상한 곳이며 왜 이러한 오류가 발생하는지 이해가되지 않습니다.

프로그램 디렉토리 외부에서 paster 명령을 실행하면 버전 충돌 오류가 발생합니다. 예를 들면 : 나는 프로그램 디렉토리 내에서 명령을 실행하는 경우

cd/
paster serve /opt/pyapps/menuadmin/prod.ini 
Traceback (most recent call last): 
    File "/opt/csw/bin/paster", line 8, in <module> 
    load_entry_point('PasteScript==1.7.5', 'console_scripts', 'paster')() 
    File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/command.py", line 93, in run 
    commands = get_commands() 
    File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/command.py", line 135, in get_commands 
    plugins = pluginlib.resolve_plugins(plugins) 
    File "/opt/csw/lib/python2.6/site-packages/PasteScript-1.7.5-py2.6.egg/paste/script/pluginlib.py", line 82, in resolve_plugins 
    pkg_resources.require(plugin) 
    File "/opt/csw/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/pkg_resources.py", line 626, in require 
    File "/opt/csw/lib/python2.6/site-packages/setuptools-0.6c9-py2.6.egg/pkg_resources.py", line 528, in resolve 
pkg_resources.VersionConflict: (Pylons 0.9.7 (/opt/csw/lib/python2.6/site-packages/Pylons-0.9.7-py2.6.egg), Requirement.parse('Pylons>=0.10')) 

하지만, 그것을 잘 실행됩니다. 예 :

cd /opt/pyapps/menuadmin/ 
paster serve /opt/pyapps/menuadmin/prod.ini 
Starting server in PID 29902. 
serving on http://127.0.0.1:3002 

나는 절대로 이런 일이 왜 주위에 내 머리를 얻을 수 없습니다!

전혀 생각이나 의견을 부탁드립니다 !!!!

+0

버전 충돌을 피하려면 [virtualenv] (http://www.virtualenv.org)를 만들고 거기에 필요한 버전의 Pylons 및 기타 라이브러리를 설치하고 관리자의 virtualenv에서 응용 프로그램을 실행하십시오. – pablodcar

+0

우리는 여러개의 가상 환경을 가지고 있지만 문제는 여전히 각각 이상합니다. 매우 이상합니다 – JackalopeZero

+0

각 경우마다 다른 버전의'paster' 명령을 실행하고있을 수 있습니다. 예 : '/ opt/csw'가 가상 환경 인 경우 해당'paster' 명령은'/ opt/csw/bin/paster'에 위치해야합니다. – pablodcar

답변

1

당신이 말한 것에 따르면 당신은 두 가지 다른 버전의 깔개를 실행하고있는 것 같습니다. 첫 번째 버전은 이전 Pylons 패키지 0.9.7을 실행하고 두 번째 버전은 앱의 요구 사항을 충족하거나 초과하는 최신 버전을 사용합니다.

내가하는 것은 먼저 실행중인 펙스터의 버전을 확인하는 것입니다. 프로젝트 외부에서 다음을 실행하십시오.

which paster 

그런 다음 프로젝트 디렉토리에서 동일한 명령을 다시 실행하고 결과를 비교하십시오. 나는 그 경로가 다르다는 것을 알게 될 것이라고 생각합니다. 그럴 경우, 당신이해야 할 일은 첫 번째 버전에 대한 파일론 버전을 업데이트하는 것입니다. 이것은 글로벌 설치라고 생각합니다.

그러나 다른 사람들은 virtualenv 내에서 앱을 실행하는 것이 더 좋을 것이라고 말했고, 특히 가상의 여러 가상 엔진이 있고 여러 프로젝트가 있다는 것을 나타내는 것처럼 보이는 경우가 있습니다. 나중에 두통의 두려움에서 당신을 구할 것이라고 말할 때 나를 신뢰하십시오, 원래 이것을하지 않은 누군가로부터.