【问题标题】:Installing pigpio into a virtual environment将 pigpio 安装到虚拟环境中
【发布时间】:2017-12-13 21:02:22
【问题描述】:

我想问一下如何在虚拟环境中正确安装库。目前,当我在 Raspberry Pi Zero W 上激活虚拟环境时,在安装时使用名为 pigpio 的伺服库时遇到了困难。

如果我在终端(即python myscript.py)的 bash 命令中省略“sudo”,就会出现问题,因为使用命令“sudo python myscript.py”会导致该脚本的另一个模块(Boto3)在虚拟环境。

我使用 sudo 命令时的错误消息是: 回溯(最近一次通话最后): 文件“myscript.py”,第 13 行,在 进口猪皮 ImportError: 没有名为 Boto3 的模块

另一方面,使用非 sudo bash 命令会导致 pigpio,即伺服库模块不可用。

我怀疑问题出在安装 pigpio 库的过程中,因为我必须在其中一个步骤中使用“sudo make install”。我想我可能需要通过避免全局安装的替代方法进行安装,即 sudo。我的理解是,只有 pip 可以将软件包安装到 virtualenv(来自 Pypi)(与 sudo 相比,它导致全局安装)。有没有办法让我找到另一种方法将库适当地安装到虚拟环境中?

【问题讨论】:

    标签: python installation virtual environment


    【解决方案1】:

    最简单的方法是从系统范围的模块中卸载所有依赖项:

    sudo pip uninstall boto3 pigpio
    

    cd 到 /home/your_user 之类的目录,然后重试在 venv 中安装依赖项,例如:

    virtualenv venv_test
    source venv_test/bin/activate
    pip install boto3
    cd pigpio
    

    也许对https://github.com/joan2937/pigpio/blob/master/Makefile#L34 进行了修改以放入您的 venv 文件夹中?喜欢$(pwd)/venv_test:

    make
    make install
    deactivate
    source venv_test/bin/activate
    

    如果使用--system-site-packages 或类似的东西,权限和模块路径可能会变得复杂。

    还要确保您在 venv 文件夹所在的目录中具有权限。所以就像如果你 ls -ail . 你应该看到非 sudo 用户有 chown craver2000:craver2000 the_dir

    您还可以执行以下操作:

    sudo cp -R /path/to/dist-packages/pigpio venv_test/lib/python2.7/site-packages
    sudo chown -R $USER venv_test/lib/python2.7/site-packages
    

    经过进一步检查,您也许可以将 pigpio 文件复制到您的 virtualenv 中,例如:

    deactivate
    cp pigpio/pigpio.py venv_test/lib/python2.7/site-packages
    source venv_test/bin/activate
    

    在这里进一步挖掘是一个未经测试的安装,但是嘿模块使用 venv 导入:):

    162  sudo apt-get install build-essential
      163  git clone https://github.com/joan2937/pigpio.git
      164  pip
      165  pip install virtualenv
      166  python -m pip install virtualenv
      167  sudo pip install virtualenv
      168  sudo pip install --upgrade pip
      169  virtualenv
      170  virtualenv venv_test
      171  cd pigpio/
      172  ls
      173  nano Makefile
      174  make
      175  make install
      176  mkdir /opt/pigpio
      177  sudo mkdir /opt/pigpio
      178  chown $USER /opt/pigpio
      179  sudo chown $USER /opt/pigpio
      180  make install
      181  source ../venv_test/bin/activate
      182  ls
      183  make install
      184  sudo mkdir /usr/lib/python3.5/site-packages
      187  sudo chown $USER /usr/lib/python3.5/site-packages
      211  sudo chmod 4755 /sbin/ldconfig
      213  sudo chmod 4755 /sbin/ldconfig.real
      214  make install
      215  history
    

    【讨论】:

    • 感谢您的回复 jmunsch。我完成了上述步骤,现在只是按照建议对 pigpio makefile 进行了修改,所以 L34 现在显示:prefix = $(pwd)/venv_test。然后我成功地“制作”了文件。但是,在“make install”步骤中,出现错误: (venv_test) pi@raspberrypi:~/pigpio $ make install install -m 0755 -d /opt/pigpio/cgi install -m 0755 -d /venv_test/include安装:无法创建目录“/venv_test”:权限被拒绝 Makefile:80:目标“安装”的配方失败 make:*** [安装] 错误 1。任何想法为什么?
    • @Craver2000 prefix = /home/myuser/venv_test 是我改成的。我不确定 makefile 是如何进行 shell 扩展的,所以 $(pwd) 的工作方式可能会有所不同,只需在您想要的位置输入完整路径即可?
    • 我已将 L34 更改为 prefix = /home/pi/venv_test,但我仍然收到如下所示的错误。你能给我建议吗?
    • (venv_test) pi@raspberrypi:~/pigpio $ make install install -m 0755 -d /opt/pigpio/cgi install -m 0755 -d /home/pi/venv_test/include install -m 0644 pigpio.h /home/pi/venv_test/include install -m 0644 pigpiod_if.h /home/pi/venv_test/include install -m 0644 pigpiod_if2.h /home/pi/venv_test/include install -m 0755 -d /home/pi/venv_test/lib install -m 0755 libpigpio.so /home/pi/venv_test/lib ........
    • 非常感谢您的帮助!有效!我在虚拟环境中导入和使用 pigpio 库的脚本现在正在运行。对我来说,根据您的历史记录(L34 编辑后)我需要执行的其他步骤是 L184、L187、L211,然后是 make install
    猜你喜欢
    • 2013-05-19
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2016-09-11
    • 2019-05-16
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多