2017-11-27 12 views
2

Python3 프로젝트를위한 가상 환경을 만들려고합니다. 문제는 내가 virtualenv에 설치하려고하는 일부 종속성이 pip를 통과하지 않는다는 것입니다. 예를 들어 LibTorrent를 얻으려면 다음을 실행해야했습니다. $ sudo apt-get install python3-libtorrent (LibTorrent는 Python 바인딩이있는 C++ 라이브러리입니다). 환경 밖에서는 프로젝트가 잘 돌아갑니다.apt-get을 사용하여 가상 환경에 패키지 설치

(env) [email protected]:~/Projects/test$ python3 main.py 
Traceback (most recent call last): 
    File "main.py", line 4, in <module> 
    import libtorrent as lt 
ModuleNotFoundError: No module named 'libtorrent' 

내가 환경 내부 $ sudo apt-get install python3-libtorrent 실행하는 경우, 그것은 이미 설치되어 있음을 알려줍니다 : 내가 가져 오기 오류 얻을 내부 그러나

(env) [email protected]:~/Projects/test$ sudo apt-get install python3-libtorrent 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
python3-libtorrent is already the newest version (1.1.1-1build2). 
0 to upgrade, 0 to newly install, 0 to remove and 0 not to upgrade. 

나의 이해이게을 apt-get을 글로벌이기 때문이다 명령과 환경과는 아무런 관련이 없습니다. 그렇다면이 패키지를 내 환경에 어떻게 설치합니까?

+0

'apt-get'은 전역 적으로 설치되며, virutal 환경과는 아무런 관련이 없습니다. 활성화 된 virtualenv 또는 외부에서 해당 명령을 실행해도 상관 없습니다. – cezar

+0

@cezar 그러면 가상 환경에서 프로그램을 실행할 때만 가져 오기 오류가 발생합니다. – Sam

+0

이유가 무엇인지 말하기는 어렵지만'python' 버전을 확인합니다. 가상 환경에서 가지고있는 Python의 버전은 무엇입니까? 이미 파이썬 3이면, 가상 환경에서'python main.py'를 실행해야합니다. 'which' 명령을 사용하여 실행되는 파이썬을 찾으십시오. – cezar

답변

0

문제를 해결할 수 있었습니까? 저도 같은 문제가 발생하고있어, 나는이 우연히 : http://dreamingpotato.com/2015/11/21/how-to-install-python-libtorrent-in-virtualenv/

(링크 나누기 경우 아래 명령 하루 재현)

sudo apt-get build-dep python-libtorrent 
wget http://downloads.sourceforge.net/project/libtorrent/libtorrent/libtorrent-rasterbar-1.0.5.tar.gz 
tar -zxvf libtorrent-rasterbar-1.0.5.tar.gz 
cd libtorrent-rasterbar-1.0.5/ 
./configure --enable-python-binding PYTHON=`which python` --prefix=$VIRTUAL_ENV 
make 
make install 
export LD_LIBRARY_PATH="$VIRTUAL_ENV/lib" 

내 생각 엔이 문제는 다음이 있다는 것입니다 :

  1. python3-libtorrentpython-libtorrent은 C++ 라이브러리에 대한 파이썬 바인딩/래퍼입니다.
  2. 이 링크에는 사용중인 파이썬 경로에 따라 lib-torrent를 컴파일하는 명령이 있습니다 : ./configure --enable-python-binding PYTHON=`which python` --prefix=$VIRTUAL_ENV 가상 환경을 만들 때 변경됩니다.

이론적으로 이론적으로 사용하는 모든 단일 가상 엔진에 대해 libtorrent를 컴파일해야합니다. 그것은 끔찍한 해결책이지만, 나는 믿는 유일한 사람 일 것입니다. 최악의 방법은 단순한 pip install -r requirements.txt보다.

내가 해결할 수 있는지 알려주고 정답으로 표시하는 것이 좋습니다.