【问题标题】:InstaPy: "Error, unable to determine correct filename for 64bit linux"InstaPy:“错误,无法确定 64 位 linux 的正确文件名”
【发布时间】:2020-08-03 19:12:02
【问题描述】:

有人知道如何解决这个问题吗? 来自控制台的堆栈跟踪,执行后报告错误:

    InstaPy Version: 0.6.9
    ._.  ._.  ._.  ._.  ._.  ._.  ._.  ._.  ._. 
    Workspace in use: "/home/zanettra/InstaPy"
    Error, unable to determine correct filename for 64bit linux
    Traceback (most recent call last):
    File "unfollow.py", line 24, in <module>
    headless_browser=False)
    File "/usr/local/lib/python3.6/dist-packages/instapy/instapy.py", line 
    322, in __init__
    self.logger,
      File "/usr/local/lib/python3.6/dist-packages/instapy/browser.py", line 114, in set_selenium_local_session
        driver_path = geckodriver_path or get_geckodriver()
      File "/usr/local/lib/python3.6/dist-packages/instapy/browser.py", line 36, in get_geckodriver
        sym_path = gdd.download_and_install()[1]
      File "/usr/local/lib/python3.6/dist-packages/webdriverdownloader/webdriverdownloader.py", line 177, in download_and_install
        show_progress_bar=show_progress_bar)
      File "/usr/local/lib/python3.6/dist-packages/webdriverdownloader/webdriverdownloader.py", line 129, in download
        download_url = self.get_download_url(version, os_name=os_name, bitness=bitness)
      File "/usr/local/lib/python3.6/dist-packages/webdriverdownloader/webdriverdownloader.py", line 324, in get_download_url
        raise RuntimeError(info_message)
    RuntimeError: Error, unable to determine correct filename for 64bit linux

【问题讨论】:

标签: python linux instapy


【解决方案1】:

这个问题与 InstaPy 无关,而是来自 webdriverdownloader 的 webdriverdownloader.py。对于 Ubuntu,您可以使用 sudo apt install firefox-geckodriver 解决问题;其他操作系统也会有类似的解决方案来安装 geckodirver。


对于 macOS 用户, 问题是由于macOS geckodriver-v0.30.0-macos.tar.gzgeckodriver-v0.30.0-macos-aarch64.tar.gz 中的新arch ARM 造成的

2021 年 11 月可用版本:

['geckodriver-v0.30.0-linux32.tar.gz', 'geckodriver-v0.30.0-linux32.tar.gz.asc', 'geckodriver-v0.30.0-linux64.tar.gz', 'geckodriver-v0.30.0-linux64.tar.gz.asc', 'geckodriver-v0.30
.0-macos-aarch64.tar.gz', 'geckodriver-v0.30.0-macos.tar.gz', 'geckodriver-v0.30.0-win32.zip', 'geckodriver-v0.30.0-win64.zip']

您可以为GeckoDriverDownloader 修补文件 -> site-packages/webdriverdownloader/webdriverdownloader.py 带有以下内容:

   1   │ diff --git a/Users/user/GitHub/InstaPy/venv39/lib/python3.9/site-packages/webdriverdownloader/webdriverdownloader.py b/Users/user/GitHub/InstaPy/venv39/lib/python3.9/
       │ site-packages/webdriverdownloader/webdriverdownloader_patch.py
   2   │ index bc01c2d..057862a 100644
   3   │ --- a/Users/user/GitHub/InstaPy/venv39/lib/python3.9/site-packages/webdriverdownloader/webdriverdownloader.py
   4   │ +++ b/Users/user/GitHub/InstaPy/venv39/lib/python3.9/site-packages/webdriverdownloader/webdriverdownloader_patch.py
   5   │ @@ -382,6 +382,13 @@ class GeckoDriverDownloader(WebDriverDownloaderBase):
   6   │              )
   7   │              logger.error(info_message)
   8   │              raise RuntimeError(info_message)
   9   │ +        # macos is only available for 64bit, 32bit is deprectated
  10   │ +        # geckodriver is available for x64 and aarch64, this is why the "RuntimeError: Error, unable to determine correct filename for 64bit macos"
  11   │ +        # geckodriver-v0.30.0-macos.tar.gz
  12   │ +        # geckodriver-v0.30.0-macos-aarch64.tar.gz
  13   │ +        if os_name == "macos":
  14   │ +            bitness = ".tar.gz"  # no bitness for macos since it is 64bit only. Use the extension for tar.gz
  15   │ +
  16   │          if len(filename) > 1:
  17   │              filename = [name for name in filenames if os_name + bitness in name]
  18   │              if len(filename) != 1:

【讨论】:

  • 在 macos 中看起来:brew install geckodriver
【解决方案2】:

在 Macos 上添加对我有用的东西。

最简单的做法是从official latest github link 下载驱动程序并解压缩 zip 文件夹。

创建一个 virtualenv 并在 virtualenv 的 bin 文件夹中添加 geckodriver 可执行文件。

您也可以使用 sys.path 手动添加 geckodriver 的路径,如下所示:

import sys
sys.path.insert(0,'/Users/myfolder/Downloads/geckodriver')

但由于某种原因,这对我不起作用。 Virtualenv 解决方案工作正常。

【讨论】:

    【解决方案3】:

    解决办法贴在这里:https://github.com/leonidessaguisagjr/webdriverdownloader/pull/12

    您必须在 webdriverdownloader.py 中更改一行 来自

    filename = [name for name in filenames if os_name + bitness in name]
    

    filename = [name for name in filenames if os_name + bitness in name and name[-3:] != 'asc' ]
    

    文件存储在我系统中的路径是home/kali/.local/lib/python3.7/site-packages/webdriverdownloader

    我使用pip3 install webdriverdriverdownloader 来查找它的存储位置

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-22
      • 2020-06-03
      • 1970-01-01
      • 2017-10-25
      • 2012-09-10
      • 2010-09-19
      • 1970-01-01
      • 2011-06-13
      相关资源
      最近更新 更多