2

我在 Raspberry Pi Revision B 上运行 Rapbian。

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

我尝试了两次:一次使用 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

收到此错误后,我执行了以下操作:

我在文件中添加了一些行,如下所示:

include /etc/ld.so.conf.d/*.conf
include /usr/local/lib/python2.7/dist-packages/snap7-full-1.2.1/
include /usr/local/lib/python2.7/dist-packages/snap7-full-1.2.1/release/Linux/ARMHF/Raspberry/
include /usr/local/lib/python2.7/dist-packages/snap7-full-1.2.1/src/lib/
include /usr/local/lib/python2.7/dist-packages/snap7-python/build/lib.linux-armv6l-2.7/snap7/
include /usr/local/lib/python2.7/dist-packages/snap7-python/

然后我发出了sudo ldconfig更新缓存文件的命令/etc/ld.so.cache,但错误仍然存​​在:(

  1. include在每一行的前面都有说明是否正确?
  2. 是否有任何我没有看到的严重错误?
  3. 我需要包含哪个库?我只是想到了这里提供的:SourceForge Link。我选择了第一个 .tar.gz 包。

对不起我的英语,提前谢谢!

4

3 回答 3

5

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

要在 Raspberry Pi 上使用带有 python-snap7 包装器的 snap7 库,您需要执行以下步骤:

  1. 例如下载 SNAP7 库:snap7-full-1.2.1
    在 Pi 命令行中:
    wget http://sourceforge.net/projects/snap7/files/1.2.1/snap7-full-1.2.1.tar.gz/download


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

  3. 在 Pi 命令行中为树莓派编译库(arm_v6_linux.mk用于 RPI 1。对于 RPI 2 使用arm_v7_linux.mk) :

    cd snap7-full-1.2.1/build/unix && sudo make -f arm_v6_linux.mk all

  4. 将编译后的库复制到 Pi 命令行中的lib目录:

    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


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


  6. 在 Pi 命令行中为 SNAP7 库安装 python 包装器:
    sudo pip install python-snap7

于 2015-05-13T12:01:54.533 回答
1

您尚未安装 snap7 库,这就是您遇到此问题的原因。

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

为了快速修复,您可以

  • 下载这个:http: //sourceforge.net/projects/snap7/files/1.1.0/
  • 解开它,和
  • 在文件夹'build/unix'中
  • 运行命令make -f x86_64_linux.mk all
  • 然后cp ../../build/bin/x86_64_linux /usr/local/lib/
  • 然后修改 common.py 以便在“ init ”函数中手动指向您的“.so”文件

我在这个函数的开头添加了这一行:lib_location = "/usr/local/lib/libsnap7.so"

于 2014-08-18T14:12:25.200 回答
1

我有一个解决方案:

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
于 2017-07-04T19:07:55.320 回答