2014-07-24 3 views
3

나는 virtualenv와 함께 파이썬에서 redis 라이브러리를 사용하고 있습니다.동일한 파일 이름의 venv 폴더에서 가져 오기

파일이 있는데 다음과 같은 가져 오기가있는 redis.py입니다.

import redis 

class RedisExtension(Extension): 
    def __init__(self, config): 
     print redis 

class Redis(Facade): 
    pass 

그러나 venv 폴더가 활성화되어 있어도 자체 가져 오기를 수행하는 것으로 보입니다. 여기에서 이름을 변경하지 않고 pip 으로 redis 라이브러리가 설치된 venv 폴더에서 redis.py 가져 오기 redis를 만들어야합니다.

그렇게 할 방법이 있습니까?

+0

어떤 버전에이 수정 사항을 넣어하여야한다 파이썬의 당신은 사용하고 있습니까? – erbridge

+0

@erbridge 2.7.5 – aacanakin

답변

3

Btw, 귀하의 요구 사항은 다소 드문 경우이며 여기에서 보여주는 내용은 일종의 해킹입니다. 파이썬 스크립트/모듈의 이름을보다 합리적인 이름으로 바꾸면 더 좋을 것입니다.

기본적으로 파이썬은 다른 경로 수에서 가져 오기를 설정하며 그 중 하나는 현재 경로입니다.

>>> import os 
>>> os.sys.path 
['', 
'/home/javl/Envs/so/bin', 
'/home/javl/Envs/so/lib/python2.7', 
'/home/javl/Envs/so/lib/python2.7/plat-x86_64-linux-gnu', 
'/home/javl/Envs/so/lib/python2.7/lib-tk', 
'/home/javl/Envs/so/lib/python2.7/lib-old', 
'/home/javl/Envs/so/lib/python2.7/lib-dynload', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/home/javl/Envs/so/local/lib/python2.7/site-packages', 
'/home/javl/Envs/so/lib/python2.7/site-packages', 
'/home/javl/Envs/so/local/lib/python2.7/site-packages/IPython/extensions', 
'/home/javl/.ipython'] 

첫 번째 항목은 ""입니다. 이것은 "이 디렉토리"를 의미합니다. 그것을 제거

>>> os.sys.path.remove("") 
>>> os.sys.path 
['/home/javl/Envs/so/bin', 
'/home/javl/Envs/so/lib/python2.7', 
'/home/javl/Envs/so/lib/python2.7/plat-x86_64-linux-gnu', 
'/home/javl/Envs/so/lib/python2.7/lib-tk', 
'/home/javl/Envs/so/lib/python2.7/lib-old', 
'/home/javl/Envs/so/lib/python2.7/lib-dynload', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/home/javl/Envs/so/local/lib/python2.7/site-packages', 
'/home/javl/Envs/so/lib/python2.7/site-packages', 
'/home/javl/Envs/so/local/lib/python2.7/site-packages/IPython/extensions', 
'/home/javl/.ipython'] 
>>> import redis 

을 우리가 원래 순서로 다시 일을 넣고 싶은 경우에, 우리는 그것을 할 수 있습니다

>>> os.sys.path.insert(0, "") 

당신은 당신의 redis.py

os.sys.path.remove("") 
import redis 
os.sys.path.insert(0, "") 

class RedisExtension(Extension): 
    def __init__(self, config): 
     print redis 

class Redis(Facade): 
    pass 
+0

가져 오기에'os.sys.path.insert (0, "")'를 붙여서 되돌립니다. – erbridge

+0

도움을 주셔서 감사합니다, 내가 모듈 이름을 변경하면 더 좋을 것 같아요. – aacanakin

+0

@erbridge Good, inserted. –

관련 문제