2014-07-15 7 views
1

랩톱이 있습니다. 그래서 직장 PC .virtualenvs/ 디렉토리에서 내 NAS로 복사 한 다음 다시 새 노트북에 복사했습니다.Python, virtualenv : 활성화하는 동안 권한 오류가 발생합니다.

virtualenvvirtualenvwrapper을 설치했는데 가상 환경이 작동하지 않습니다. 이것이 내가 처음에 얻은 것입니다.

[email protected] ~ $ workon iwidget 
virtualenvwrapper.user_scripts could not run "/home/chris/.virtualenvs/preactivate": [Errno 13] Permission denied 
virtualenvwrapper.user_scripts could not run "/home/chris/.virtualenvs/iwidget/bin/preactivate": [Errno 13] Permission denied 

그런 다음 해당 파일을 chmod + x했습니다. 후에이 환경으로 변경할 수는 있지만 라이브러리는 볼 수 없습니다.

나는이 얻을 : 또한

[email protected] ~ $ ./.virtualenvs/iwidget/bin/activate 
bash: ./.virtualenvs/iwidget/bin/activate: Permission denied 

, 특정 ENV에 내가 할 수있는 workon 있지만, 아무것도 가져 오지 될 수 있음을 보여줍니다 : (내가 + X 파일을 preactivate하는 chmod를했다 후)

[email protected] ~ $ workon iwidget 
(iwidget)[email protected] ~ $ python 
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import pytz 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named pytz 
>>> 
(iwidget)[email protected] ~ $ ls .virtualenvs/iwidget/lib/python2.7/site-packages/py 
py4j/        pytz/ 
py4j-0.8.1-py2.7.egg-info/   pytz-2014.2-py2.7.egg-info/ 
python_dateutil-2.2-py2.7.egg-info/ 

어떻게 해결할 수 있습니까?

+0

소유자/그룹 및 필요한 경우 'chown'을 확인하십시오. – wim

+0

두 컴퓨터에 동일한 사용자 이름을 사용합니다. 따라서 소유자/그룹은 두 시스템에서 동일합니다. – xpanta

+0

"permission denied"오류는 권한 문제를 나타냅니다. 'chmod + r'가 도움이됩니까? 이것이'activate' 스크립트의 소스와 파이썬이 라이브러리를 읽는데 필요한 허가입니다. – tripleee

답변

1

가상화 이동은 까다 롭습니다. 새 컴퓨터에서 스크래치를 다시 작성하는 것이 훨씬 더 나은 방법입니다. 요구 사항 파일을 사용하는 경우 이것은 간단합니다 : pip install -r requirements.txt을 수행하십시오. 하나를 사용하지 않는 경우 이전 컴퓨터에서 pip freeze > requirements.txt으로 만듭니다.

+0

이것은 내 마지막 수단이 될 예정이었습니다. 그래서 나는 새 기계에 얼어 붙일 수 없다. 내 오래된 기계에 있어야 해? – xpanta

+0

예, 요점은 현재 설치 한 항목을 나열한다는 것입니다. –

1

오류에서 알 수 있듯이 이러한 스크립트에 대한 실행 (실행) 권한이 없습니다. 비슷한 문제가 있었지만 .virtualenvs/preactivate 파일에서만 발생했습니다.

chmod u+x ~/.virtualenvs/*

나를 위해 속임수를 썼는지,하지만 그것은 또한 당신의 대답에서 언급 한 것 참조하십시오. 가상 머신을 다른 머신에서 마이그레이션하는 것과 관련이 있습니다.

당신은 아마 virtualenvwrapper을 사용하여 ~/.virtualenvs/iwidget/빈/*

을 위해 같은 일을 할 필요가, 당신은 폴더 자체의 활성화 스크립트를 사용할 필요가 없습니다,하지만 당신은 원한다면

. .virtualenvs/iwidget/bin/activate

주 그것의 앞에 점 :이,이 같은 명령을 호출해야합니까? 그 점은 실제로는 간과하기 쉽지만 실제로는 명령이며 env를 활성화하는 데 사용됩니다. 정품 인증 스크립트는 파일의 처음 두 줄로 알려주기 때문에 자체에서 실행할 수 없습니다. source 명령은 점의 별명입니다.

그러나 workon iwidget은 재즈를 모두 처리해야합니다.

가져 오기 문제의 경우 가져 오기를 시도하기 전에 env에서 pip install pytz을 실행하고 싶을 수 있습니다. env에 있는지 보려면 pip freeze|grep pytz을 입력하십시오.여기 env your_project$:source env/bin/activate

이 명령 이후에 생성됩니다 VIRTUALENV 디렉토리입니다 :

프로젝트에서
0

,이 명령을 입력 $:virtualenv env

첫 번째 명령을 실행 한 후,이 표시됩니다 (env)[email protected]:~/path_to_your_project$

완료.

+0

코드 블록에 이러한 명령을 넣어서 가독성을 정리할 수 있습니까? – AndrewK

관련 문제