0

我无法使用import pandas as pdreplit 导入熊猫。我已经安装了这个包,pip install pandas它可以在包中看到。我已经成功地将它导入到 replit 的其他项目中。每次我尝试将它导入到这个项目的代码中时,都会出现以下错误:

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    import pandas as pd
  File "/home/runner/thing/venv/lib/python3.8/site-packages/pandas/__init__.py", line 16, in <module>
    raise ImportError(
ImportError: Unable to import required dependencies:
numpy: 

IMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!

Importing the numpy C-extensions failed. This error can happen for
many reasons, often due to issues with your setup or how NumPy was
installed.

We have compiled some common reasons and troubleshooting tips at:

    https://numpy.org/devdocs/user/troubleshooting-importerror.html

Please note and check the following:

  * The Python version is: Python3.8 from "/home/runner/thing/venv/bin/python"
  * The NumPy version is: "1.22.2"

and make sure that they are the versions you expect.
Please carefully study the documentation linked above for further help.

Original error was: libz.so.1: cannot open shared object file: No such file or directory
4

1 回答 1

1

你不需要使用pip来在 repl.it 上安装包——事实上,你不应该!使用 Nix 派生不仅效果更好(因为您按照其设计方式使用他们的操作系统发行版),而且还通过允许从只读、哈希寻址的共享存储中使用包来降低其存储成本。

/lib为其他发行版构建的二进制文件可能假定在、或类似目录中会有库/usr/lib,但这不是 NixOS 的工作方式:库将位于类似 的路径中/nix/store/<hash>-<packagename>-<version>/lib,并且这些路径嵌入到使用这些库的可执行文件中。

这里最简单的做法是创建一个新的 bash repl,但要为其添加一个 Python 解释器。(我建议这样做而不是使用 Python repl,因为他们设置 Python REPL 的方式增加了一堆需要重新配置的额外工具;bash repl 保持简单)。

  • 创建一个新的 bash repl。
  • 单击三点菜单。
  • 选择“显示隐藏文件”。
  • 打开名为replit.nix
  • 通过使用 pandas 添加 Python 解释器来编辑文件,如下所示:
    { pkgs }: {
        deps = [
            pkgs.bashInteractive
            (pkgs.python38.withPackages (p: [p.pandas]))
        ];
    }
    
    ...将其更改为口味(例如,只要他们从具有 Python 3.9 或 3.10 的二进制文件的频道获取软件,您就可以更改python38python39or python310)。
  • 点击“运行”按钮
  • 在打开的新 shell 中,运行python,看看你可以import pandas没有麻烦。

如果在将 Python 文件添加到 repl 后,您还可以更改.replit隐藏文件以使其在启动时自动运行该文件。请注意,在 NixOS 上,您应该使用#!/usr/bin/env python您的 shebang,因为 PATH 查找是必不可少的。

于 2022-02-10T03:05:09.417 回答