2017-10-29 3 views
1

프로젝트 디렉토리 (virtual env 디렉토리에서 하나)에 pip를 통해 설치된 모듈을 가져 오려고 할 때 virtualenv에 문제가 있습니다.VirtualEnv python 가져 오기가 프로젝트 폴더에서 작동하지 않고 virtualenv 폴더 만

내 프로젝트 구조는;

\Project 
..\dev (virtual env) 
..test.py 

난 내가 가져 오기 오류를 얻을 수를 포함하려고하지만 때, 내 가상 환경의 컨텍스트 내에서 주사위를 사용하여 시멘트 설치했습니다.

내 프로젝트 폴더의 루트에서.

Project$ source dev/bin/activate 
(dev) Project$ pip list 
cement (2.10.2) 
pip (9.0.1) 
setuptools (36.6.0) 
wheel (0.30.0) 

모든 게 잘 보입니다.

(dev) Project$ python 
Python 2.7.10 (default, Feb 7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from cement.core.foundation import CementApp 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "cement.py", line 1, in <module> 
    from cement.core.foundation import CementApp 
ImportError: No module named core.foundation 
>>> quit() 

그래서 가상 환경 디렉토리로 이동합니다.

(dev) Project$ cd dev/ 
(dev) dev$ python 
Python 2.7.10 (default, Feb 7 2017, 00:08:15) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from cement.core.foundation import CementApp 
>>> 

가져 오기는 virtualenv 디렉토리 내에서 올바르게 작동합니다.

이 정확한 동작입니까? 내 src 파일을 virtualenv 디렉토리에 저장해야합니까? 내 앱이 virtualenv 디렉토리 외부에서 살 수 있었지만 virtualenv에서 일단 설치된 모듈에 액세스 할 수 있었다는 인상을 받았다면?

+1

아니요, 올바른 동작이 아닙니다. virtualenv를 활성화 한 후에는 프로젝트 외부의 모든 디렉토리에서'python'을 실행할 수 있어야하고'from cement.core.foundation import CementApp' *가 작동해야합니다.virtualenv 디렉토리 내에서 소스 파일을 절대 옮기지 않아야합니다. virtualenv 디렉토리가 어떻게 든 부숴 질지 궁금합니다. 나는 그것을 재현하는 것이 좋습니다. 이것은 매우 쉬워야합니다. – janos

+0

통찰력을 얻은 주셔서 감사합니다. @janos, 가상 환경을 다시 만들었고 문제가 해결되었습니다. 가상 환경이 처음 올바르게 생성되지 않아야합니다. 다시 한 번 감사드립니다! – Jamie

답변

1

이 올바른 동작입니까?

아니요, 올바른 동작이 아닙니다. virtualenv를 활성화 한 후에는 프로젝트 외부의 모든 디렉토리에서 python을 실행할 수 있고 from cement.core.foundation import CementApp이 작동해야합니다.

src 파일을 virtualenv 디렉토리에 저장해야합니까?

아니요, 아니요, 소스 파일을 virtualenv 디렉토리로 옮기지 않아야합니다.

내 앱이 virtualenv 디렉토리 외부에있을 수 있지만 virtualenv에 설치된 모듈에 액세스 할 수 있다는 느낌이 들었습니까?

맞습니다. 이어야합니다.

제가 생각할 수있는 유일한 사실은 virtualenv 디렉토리 (dev)가 어떻게 든 손상되었거나 손상되었다는 것입니다. 나는 그것을 재현하는 것이 좋습니다. 이것은 매우 쉬워야합니다.

-1

이것은 올바른 동작입니다. 가상 환경 내에 프로젝트 관련 패키지를 설치하여 컴퓨터에있는 원래 파이썬 핍 (pip)과 섞이지 않도록하십시오. 버전 불일치는 때때로 심각한 문제이며 가상 환경을 사용하지 못하게합니다.

+1

올바르지 않습니다. 나는 당신이 질문에 대한 세부 사항을 놓친 것 같아. OP가 virtualenv를 활성화 시켰고,'pip list'는 패키지를 사용할 수 있다고 보여 주지만 한 디렉토리에서 가져올 수는 없지만 다른 디렉토리에서 가져올 수는 있습니다. 그건 정상이 아니야. 질문 자체에 대한 내 의견도 참조하십시오. – janos

+0

가상 환경에서 가져 오기가 정상적으로 작동합니다. 그러나 가상 환경 밖에서는 그렇지 않습니다. 나는 무엇을 놓쳤는가? – pissall

+0

가상 환경은 두 경우 모두 실행 중입니다. 따라서 작업 디렉토리와 상관없이 작동해야합니다. – janos