我想问一下如何在虚拟环境中适当安装库。当前,当我在Raspberry Pi Zero W上激活虚拟环境时,在安装时无法使用称为Pigpio的Servo库。
如果我在终端的bash命令(即python myscript.py)中省略了“ sudo”,则会出现问题,因为使用命令“ sudo python myscript.py”会使该脚本(Boto3)的另一个模块在虚拟环境中不可用。
使用sudo命令时出现的错误消息是:
追溯(最近一次通话):
在第13行的文件“ myscript.py”中
进口猪
ImportError:没有名为Boto3的模块
另一方面,使用非sudo bash命令会导致Pigpio,Servo库模块不可用。
我怀疑问题出在Pigpio库的安装过程中,因为我必须在其中一个步骤中使用“ sudo make install”。我认为我可能需要通过一种避免全局安装的替代方法进行安装,即sudo。我的理解是,只有pip才能将软件包安装到virtualenv(来自Pypi)(v.s。sudo导致全局安装)。有没有一种方法可以找到将库正确安装到虚拟环境中的另一种方法?
最佳答案
最简单的方法是从系统范围的模块中卸载所有依赖项:
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进行了修改?像
$(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