使用apt-get

时间:2017-11-27 08:41:43

标签: python ubuntu virtualenv libtorrent

我正在尝试为我的Python3项目创建一个虚拟环境。问题是,我试图安装到virtualenv中的一些依赖项不是通过pip。例如,要获得LibTorrent,我必须运行:$ sudo apt-get install python3-libtorrent(LibTorrent是一个带有Python绑定的C ++库)。在环境之外,我的项目运行良好。但在里面我收到导入错误:

(env) me@Comp:~/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) me@Comp:~/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是一个全局命令,与环境无关。但如果是这种情况,我该如何将此软件包安装到我的环境中?

1 个答案:

答案 0 :(得分: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 ++库的python绑定/包装。
  2. 在此链接上,有一个命令根据您使用的python路径编译lib-torrent:./configure --enable-python-binding PYTHON=`which python` --prefix=$VIRTUAL_ENV在您创建虚拟环境时会发生变化。
  3. 所以从理论上讲,你必须为你使用的每一个virtualenv编译libtorrent。这是一个可怕的解决方案,但我相信这将是唯一有效的解决方案。最简单的方法是pip install -r requirements.txt

    请告诉我这是否适合您,并考虑将此标记为正确答案。