Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
can';找不到snap7库-linux_Linux_Python 2.7_Raspbian_Plc_Snap7 - Fatal编程技术网

can';找不到snap7库-linux

can';找不到snap7库-linux,linux,python-2.7,raspbian,plc,snap7,Linux,Python 2.7,Raspbian,Plc,Snap7,我正在用覆盆子皮B版来运行Rappian 我按照此网页上的说明下载了模块python-snap7: 我试了两次:一次使用pip,另一次手动。 但是,我随后通过setup.py build和setup.py install安装了它 如果尝试创建客户端,则会出现以下错误: Python 2.7.3 (default, Mar 18 2014, 05:13:23) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license

我正在用覆盆子皮B版来运行Rappian

我按照此网页上的说明下载了模块python-snap7:

我试了两次:一次使用pip,另一次手动。 但是,我随后通过
setup.py build
setup.py install
安装了它

如果尝试创建客户端,则会出现以下错误:

Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import snap7
>>> c = snap7.client.Client()
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
   File "/usr/local/lib/python2.7/dist-packages/snap7/client.py", line 29, in __init__
   self.library = load_library()
   File "/usr/local/lib/python2.7/dist-packages/snap7/common.py", line 48, in  load_library
    return Snap7Library(lib_location).cdll
   File "/usr/local/lib/python2.7/dist-packages/snap7/common.py", line 40, in __init__
    raise Snap7Exception(msg)
snap7.exceptions.Snap7Exception: can't find snap7 library. If installed, try running ldconfig
然后我发出命令
sudo ldconfig
来更新缓存文件
/etc/ld.so.cache
,但错误仍然存在:(

  • include
    指令放在每行的前端是否正确
  • 有什么我看不到的严重错误吗
  • 我需要包括哪个图书馆? 我只是想到了这里提供的:。我选择了第一个.tar.gz包

  • 对不起,我的英语不好,请提前感谢!

    您尚未安装snap7库,这就是您出现此问题的原因

    为了解决这个问题,我建议您以正确的方式安装它。我下面描述的是一种可怕的黑客方式,但我还没有找到时间改进

    为了快速解决问题,你可以

    • 下载此文件:
    • unar it,和
    • 在文件夹“build/unix”中
    • 运行命令
      make-f x86_64_linux.mk all
    • 然后
      cp.././build/bin/x86\u 64\u linux/usr/local/lib/
    • 然后修改common.py以手动指向“init”函数中的“.so”文件

    我在这个函数的开头添加了这一行:
    lib\u location=“/usr/local/lib/libsnap7.so”

    看起来您没有安装SNAP7库(它不包含在python-SNAP7中)

    要将Raspberry Pi上的snap7库与python-snap7包装器一起使用,需要执行以下步骤:

  • 下载SNAP7库 例如:
    snap7-full-1.2.1

    在Pi命令行中:
    wgethttp://sourceforge.net/projects/snap7/files/1.2.1/snap7-full-1.2.1.tar.gz/download

  • 解压缩下载的文件
    在Pi命令行中:
    tar-zxvf snap7-full-1.2.1.tar.gz

  • 为raspberry编译库(
    arm\u v6\u linux.mk
    用于RPI 1。对于RPI 2,使用
    arm\u v7\u linux.mk

    在Pi命令行中:
    cd snap7-full-1.2.1/build/unix&&sudo make-f arm_v6_linux.mk all

  • 将编译后的库复制到
    lib
    目录
    在Pi命令行中:
    sudo cp../bin/arm_v6-linux/libsnap7.so/usr/lib/libsnap7.so

    sudo cp../bin/arm_v6-linux/libsnap7.so/usr/local/lib/libsnap7.so

  • (可选)如果没有python pip,请安装它
    在Pi命令行中:
    sudo-apt-get-install-python-pip

  • 为SNAP7 lib安装python包装器
    在Pi命令行中:
    sudo-pip安装python-snap7

  • 我得到了一个解决方案:

    sudo chown -R $USER /usr/local/lib/python2.7/dist-packages/snap7
    
    授予编辑
    snap7
    库目录中文件的权限

    然后编辑init下面的抱怨文件,并添加一行,如下所示:

    def __init__(self):
        lib_location='/usr/local/lib/libsnap7.so' # add this line here
    

    这不是一个很好的答案。根据文档,您可以通过pip安装Snap7。
    pip安装python-Snap7
    。但是,即使通过pip安装Snap7,您也会收到错误“找不到Snap7库”,代码行类似于
    client=Snap7.client.client()
    。但是行
    导入snap7
    没有错误,因此它正在导入。
    def __init__(self):
        lib_location='/usr/local/lib/libsnap7.so' # add this line here