我在Raspberry Pi上无法得到以下错误:
我自己的Python脚本从另一个名为BlackBean.py的模块调用一个函数,该模块又导入了名为“netaddr”和“configparser”的其他模块。问题是,我似乎无法通过导入错误告诉我“没有模块名为netaddr,或者如果我注释掉导入那么它也没有模块名为configparser的错误。所以我知道它的路径问题但我只是似乎无法修复它!
Blackbean.Py脚本的开头如下:
import broadlink
import ConfigParser
import sys, getopt
import time, binascii
import netaddr
import BlackBeanSettings
import re
from os import path
from Crypto.Cipher import AES
SettingsFile = ConfigParser.ConfigParser()
SettingsFile.optionxform = str
SettingsFile.read(BlackBeanSettings.BlackBeanControlSettings)
def execute_command(etc.........
BlackBean.py文件位于/ home / pi / SkyHD的项目SkyHD文件夹中。 “netaddr”和“configparser”文件&文件夹是由/home/pi/.local/lib/python2.7(and python3.5)/ site-package文件夹中的pip安装的。
sys.path在其列表中有上面的文件夹,我也编辑过.bashrc并添加了PYTHONPATH = $ {PYTHONPATH}:/ home / pi / .local / lib / python2.7 / site-package:/ home / pi /.local/lib/python3.5/site-package:/home/pi/SkyHD:../ 但这一切都不起作用。我想它一定是基本的东西,但我不能解决它!帮助!
另外,还有一些信息,当我第一次安装所有文件并运行我的程序时,一切正常,它发现文件没有问题,只有当我重新启动它时才能找到文件。
答案 0 :(得分:1)
固定。 Python在3个位置查找导入的模块,第一个是从中启动python脚本的文件夹;所以对我来说,显而易见的答案是将我需要的模块直接导入我自己的Project文件夹(/ home / pi / myproject)。这工作得很好,每次重启后都能正常工作,这是我以前的主要问题。无需创建或更改PYTHONPATH,无需乱丢.bashrc中的条目或尝试更改python路径条目。以下是步骤: 使用
将PIP升级到版本9.0.3(非ver 10)pip install --upgrade pip==9.0.3
然后使用以下
安装所需的模块pip install --target=/home/pi/your_project_folder module_name
所以对我而言...... pip install --target = / home / pi / SkyHD netaddr
我确定这不是最佳做法,但我的Raspberry Pi只有这个项目可以运行并且将模块导入到Projects文件夹中不是问题。 希望这可以帮助其他人解决同样的问题。
答案 1 :(得分:0)
您提供的信息不足。具体而言,有关用于运行脚本的python
命令的详细信息,如其版本(python -V
)及其模块搜索路径(如果您执行)
env -u PYTHONPATH python -c 'import sys; print(sys.path);'
同样,您可以轻松简化问题。如果你做python -m netaddr
会怎样?
显然在上面的命令中,替换了用于运行脚本的实际python命令。
而且,正如@BoarGules在他对你的问题的评论中提到的那样,除非你知道这些目录中的模块已经知道,否则你永远不应该永远为PYTHONPATH
添加目录到不同的python版本已被编写为使用python2和python3。